package edu.rice.linpack.LNumber; import edu.rice.linpack.util.*; public class LDouble extends LNumber { private double data; public LDouble() { data = 0; } public LDouble(LDouble S){ data = S.data; } public LDouble(double d) { data = d; } public static LNumber[] makeArray(double[] f) { int l = f.length; LNumber[] N = new LNumber[l]; for(int i=0;i 0) { int q = f[0].length; LNumber[][] N = new LNumber[l][q]; for(int i=0;i 0) { int q = N[0].length; double[][] f = new double[l][q]; for(int i=0;i 0) { int q = N[0].length; for(int i=0;i ((LDouble)N).data); } public boolean greaterThan(int d) { return (data > d); } public boolean lessThan(LNumber N) { return (data < ((LDouble)N).data); } public boolean lessThan(int d) { return (data < d); } public boolean equals(LNumber N) { return (data == ((LDouble)N).data); } public boolean equals(int d) { return (data == d); } public boolean greaterOrEqual(LNumber N) { return (data >= ((LDouble)N).data); } public boolean greaterOrEqual(int d) { return (data >= d); } public boolean lessOrEqual(LNumber N) { return (data <= ((LDouble)N).data); } public boolean lessOrEqual(int d) { return (data <= d); } public LNumber sqrt() { return new LDouble(Math.sqrt(data)); } public LNumber square() { return new LDouble(data * data); } public LNumber inv() { return new LDouble(1/data); } public LNumber invTo() { data = 1/data; return this; } public void ssq(LNumber SQ, LNumber Scale) { if(data != 0) { LDouble temp = new LDouble(Math.abs(data)); if(Scale.lessThan(temp)) { SQ.set(SQ.mult(((Scale.div(temp)).square())).pplus()); Scale.set(temp); } else SQ.addTo((temp.div(Scale)).square()); } } public LNumber realPt() { return new LDouble(data); } public LNumber conj() { return new LDouble(data); } }