diff --git a/pom.xml b/pom.xml index 254230771..a179316c4 100644 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,11 @@ 4.12 test + + net.jafama + jafama + 2.3.1 + diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/ComplexPolar.java b/src/main/java/nom/bdezonia/zorbage/algorithm/ComplexPolar.java index fd8c47c05..bab1ebd8e 100644 --- a/src/main/java/nom/bdezonia/zorbage/algorithm/ComplexPolar.java +++ b/src/main/java/nom/bdezonia/zorbage/algorithm/ComplexPolar.java @@ -26,6 +26,7 @@ */ package nom.bdezonia.zorbage.algorithm; +import net.jafama.FastMath; import nom.bdezonia.zorbage.type.data.float64.complex.ComplexFloat64Member; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -45,8 +46,8 @@ private ComplexPolar() { } */ public static void compute(double r, double theta, ComplexFloat64Member out) { - out.setR(r * Math.cos(theta)); - out.setI(r * Math.sin(theta)); + out.setR(r * FastMath.cos(theta)); + out.setI(r * FastMath.sin(theta)); } /** diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/FFT.java b/src/main/java/nom/bdezonia/zorbage/algorithm/FFT.java index e3adef3de..53b47d5ca 100644 --- a/src/main/java/nom/bdezonia/zorbage/algorithm/FFT.java +++ b/src/main/java/nom/bdezonia/zorbage/algorithm/FFT.java @@ -26,6 +26,7 @@ */ package nom.bdezonia.zorbage.algorithm; +import net.jafama.FastMath; import nom.bdezonia.zorbage.type.data.float64.complex.ComplexFloat64Algebra; import nom.bdezonia.zorbage.type.data.float64.complex.ComplexFloat64Member; import nom.bdezonia.zorbage.type.storage.IndexedDataSource; @@ -83,8 +84,8 @@ void compute(ComplexFloat64Algebra Algebra, IndexedDataSource Math.max(r1, r2) + TOL) return false; if (!RealUtils.near((r - this.r) % dr, 0, TOL)) return false; - double theta = Math.atan2(y, x); + double theta = FastMath.atan2(y, x); double theta1 = this.theta; double theta2 = this.theta + dtheta * thetaCount; while (theta < 0) theta += Math.PI * 2; @@ -133,8 +134,8 @@ public void next(RealIndex value) { } final double radius = r + tr*dr; final double angle = theta + ttheta*dtheta; - value.set(0, Math.cos(angle) * radius); // xcoord - value.set(1, Math.sin(angle) * radius); // ycoord + value.set(0, FastMath.cos(angle) * radius); // xcoord + value.set(1, FastMath.sin(angle) * radius); // ycoord } } diff --git a/src/main/java/nom/bdezonia/zorbage/sampling/SamplingSphericalRealGrid.java b/src/main/java/nom/bdezonia/zorbage/sampling/SamplingSphericalRealGrid.java index e289f4c6f..a1d8312ef 100644 --- a/src/main/java/nom/bdezonia/zorbage/sampling/SamplingSphericalRealGrid.java +++ b/src/main/java/nom/bdezonia/zorbage/sampling/SamplingSphericalRealGrid.java @@ -26,6 +26,7 @@ */ package nom.bdezonia.zorbage.sampling; +import net.jafama.FastMath; import nom.bdezonia.zorbage.misc.RealUtils; /** @@ -85,7 +86,7 @@ public boolean contains(RealIndex samplePoint) { if (r < Math.min(r1, r2) - TOL) return false; if (r > Math.max(r1, r2) + TOL) return false; if (!RealUtils.near((r - this.r) % dr, 0, TOL)) return false; - double theta = Math.acos(z/r); + double theta = FastMath.acos(z/r); double theta1 = this.theta; double theta2 = this.theta + dtheta * thetaCount; while (theta < 0) theta += Math.PI * 2; @@ -101,7 +102,7 @@ public boolean contains(RealIndex samplePoint) { if (theta < theta2 - TOL) return false; if (!RealUtils.near((theta - theta2) % dtheta, 0, TOL)) return false; } - double phi = Math.atan2(y,x); + double phi = FastMath.atan2(y,x); double phi1 = this.phi; double phi2 = this.phi + dphi*phiCount; while (phi < 0) phi += Math.PI * 2; @@ -162,9 +163,11 @@ public void next(RealIndex value) { final double radius = r + tr*dr; final double angleTheta = theta + ttheta*dtheta; final double anglePhi = phi + tphi*dphi; - value.set(0, Math.sin(angleTheta) * Math.cos(anglePhi) * radius); // xcoord - value.set(1, Math.sin(angleTheta) * Math.sin(anglePhi) * radius); // ycoord - value.set(2, Math.cos(anglePhi) * radius); // zcoord } + final double s = FastMath.sin(angleTheta); + final double c = FastMath.cos(angleTheta); + value.set(0, s * FastMath.cos(anglePhi) * radius); // xcoord + value.set(1, s * FastMath.sin(anglePhi) * radius); // ycoord + value.set(2, c * radius); // zcoord } } } diff --git a/src/main/java/nom/bdezonia/zorbage/type/data/float16/real/Float16Algebra.java b/src/main/java/nom/bdezonia/zorbage/type/data/float16/real/Float16Algebra.java index 7b2899517..524f4d12b 100644 --- a/src/main/java/nom/bdezonia/zorbage/type/data/float16/real/Float16Algebra.java +++ b/src/main/java/nom/bdezonia/zorbage/type/data/float16/real/Float16Algebra.java @@ -28,6 +28,7 @@ import java.util.concurrent.ThreadLocalRandom; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Max; import nom.bdezonia.zorbage.algorithm.Min; @@ -388,7 +389,7 @@ public void call(Integer power, Float16Member a, Float16Member b) { b.setV(Double.NaN); } else - b.setV( Math.pow(a.v(), power) ); + b.setV( FastMath.pow(a.v(), power) ); } }; @@ -458,7 +459,7 @@ public Procedure1 E() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.exp(a.v()) ); + b.setV( FastMath.exp(a.v()) ); } }; @@ -472,7 +473,7 @@ public Procedure2 exp() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.expm1(a.v()) ); + b.setV( FastMath.expm1(a.v()) ); } }; @@ -512,7 +513,7 @@ public Procedure2 log1p() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.cos(a.v()) ); + b.setV( FastMath.cos(a.v()) ); } }; @@ -526,7 +527,7 @@ public Procedure2 cos() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.sin(a.v()) ); + b.setV( FastMath.sin(a.v()) ); } }; @@ -555,7 +556,7 @@ public Procedure3 sinAndCos() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.tan(a.v()) ); + b.setV( FastMath.tan(a.v()) ); } }; @@ -571,7 +572,7 @@ public Procedure2 tan() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( 1.0 / Math.sin(a.v()) ); + b.setV( 1.0 / FastMath.sin(a.v()) ); } }; @@ -587,7 +588,7 @@ public Procedure2 csc() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( 1.0 / Math.cos(a.v()) ); + b.setV( 1.0 / FastMath.cos(a.v()) ); } }; @@ -603,7 +604,7 @@ public Procedure2 sec() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( 1.0 / Math.tan(a.v()) ); + b.setV( 1.0 / FastMath.tan(a.v()) ); } }; @@ -617,7 +618,7 @@ public Procedure2 cot() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.cosh(a.v()) ); + b.setV( FastMath.cosh(a.v()) ); } }; @@ -631,7 +632,7 @@ public Procedure2 cosh() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.sinh(a.v()) ); + b.setV( FastMath.sinh(a.v()) ); } }; @@ -660,7 +661,7 @@ public Procedure3 sinhAndCosh() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.tanh(a.v()) ); + b.setV( FastMath.tanh(a.v()) ); } }; @@ -676,7 +677,7 @@ public Procedure2 tanh() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( 1.0 / Math.sinh(a.v()) ); + b.setV( 1.0 / FastMath.sinh(a.v()) ); } }; @@ -692,7 +693,7 @@ public Procedure2 csch() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( 1.0 / Math.cosh(a.v()) ); + b.setV( 1.0 / FastMath.cosh(a.v()) ); } }; @@ -708,7 +709,7 @@ public Procedure2 sech() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( 1.0 / Math.tanh(a.v()) ); + b.setV( 1.0 / FastMath.tanh(a.v()) ); } }; @@ -722,7 +723,7 @@ public Procedure2 coth(Float16Member a, Float16Memb { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.acos(a.v()) ); + b.setV( FastMath.acos(a.v()) ); } }; @@ -736,7 +737,7 @@ public Procedure2 acos() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.asin(a.v()) ); + b.setV( FastMath.asin(a.v()) ); } }; @@ -750,7 +751,7 @@ public Procedure2 asin() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.atan(a.v()) ); + b.setV( FastMath.atan(a.v()) ); } }; @@ -764,7 +765,7 @@ public Procedure2 atan() { { @Override public void call(Float16Member a, Float16Member b, Float16Member c) { - c.setV( Math.atan2(a.v(), b.v()) ); + c.setV( FastMath.atan2(a.v(), b.v()) ); } }; @@ -1019,7 +1020,7 @@ public Procedure2 sqrt() { { @Override public void call(Float16Member a, Float16Member b) { - b.setV( Math.cbrt(a.v()) ); + b.setV( FastMath.cbrt(a.v()) ); } }; @@ -1078,7 +1079,7 @@ public void call(Float16Member a, Float16Member b, Float16Member c) { if (a.v() == 0 && b.v() == 0) c.setV(Double.NaN); else - c.setV( Math.pow(a.v(), b.v()) ); + c.setV( FastMath.pow(a.v(), b.v()) ); } }; diff --git a/src/main/java/nom/bdezonia/zorbage/type/data/float32/real/Float32Algebra.java b/src/main/java/nom/bdezonia/zorbage/type/data/float32/real/Float32Algebra.java index 2bd5b7813..4c352131f 100644 --- a/src/main/java/nom/bdezonia/zorbage/type/data/float32/real/Float32Algebra.java +++ b/src/main/java/nom/bdezonia/zorbage/type/data/float32/real/Float32Algebra.java @@ -28,6 +28,7 @@ import java.util.concurrent.ThreadLocalRandom; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Max; import nom.bdezonia.zorbage.algorithm.Min; @@ -393,7 +394,7 @@ public void call(Integer power, Float32Member a, Float32Member b) { b.setV(Float.NaN); } else - b.setV( (float) Math.pow(a.v(), power) ); + b.setV( (float) FastMath.pow(a.v(), power) ); } }; @@ -463,7 +464,7 @@ public Procedure1 E() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.exp(a.v()) ); + b.setV( (float) FastMath.exp(a.v()) ); } }; @@ -477,7 +478,7 @@ public Procedure2 exp() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.expm1(a.v()) ); + b.setV( (float) FastMath.expm1(a.v()) ); } }; @@ -517,7 +518,7 @@ public Procedure2 log1p() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.cos(a.v()) ); + b.setV( (float) FastMath.cos(a.v()) ); } }; @@ -531,7 +532,7 @@ public Procedure2 cos() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.sin(a.v()) ); + b.setV( (float) FastMath.sin(a.v()) ); } }; @@ -560,7 +561,7 @@ public Procedure3 sinAndCos() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.tan(a.v()) ); + b.setV( (float) FastMath.tan(a.v()) ); } }; @@ -576,7 +577,7 @@ public Procedure2 tan() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) (1.0 / Math.sin(a.v())) ); + b.setV( (float) (1.0 / FastMath.sin(a.v())) ); } }; @@ -592,7 +593,7 @@ public Procedure2 csc() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) (1.0 / Math.cos(a.v())) ); + b.setV( (float) (1.0 / FastMath.cos(a.v())) ); } }; @@ -608,7 +609,7 @@ public Procedure2 sec() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) (1.0 / Math.tan(a.v())) ); + b.setV( (float) (1.0 / FastMath.tan(a.v())) ); } }; @@ -622,7 +623,7 @@ public Procedure2 cot() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.cosh(a.v()) ); + b.setV( (float) FastMath.cosh(a.v()) ); } }; @@ -636,7 +637,7 @@ public Procedure2 cosh() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.sinh(a.v()) ); + b.setV( (float) FastMath.sinh(a.v()) ); } }; @@ -665,7 +666,7 @@ public Procedure3 sinhAndCosh() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.tanh(a.v()) ); + b.setV( (float) FastMath.tanh(a.v()) ); } }; @@ -681,7 +682,7 @@ public Procedure2 tanh() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) (1.0 / Math.sinh(a.v())) ); + b.setV( (float) (1.0 / FastMath.sinh(a.v())) ); } }; @@ -697,7 +698,7 @@ public Procedure2 csch() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) (1.0 / Math.cosh(a.v())) ); + b.setV( (float) (1.0 / FastMath.cosh(a.v())) ); } }; @@ -713,7 +714,7 @@ public Procedure2 sech() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) (1.0 / Math.tanh(a.v())) ); + b.setV( (float) (1.0 / FastMath.tanh(a.v())) ); } }; @@ -727,7 +728,7 @@ public Procedure2 coth() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.acos(a.v()) ); + b.setV( (float) FastMath.acos(a.v()) ); } }; @@ -741,7 +742,7 @@ public Procedure2 acos() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.asin(a.v()) ); + b.setV( (float) FastMath.asin(a.v()) ); } }; @@ -755,7 +756,7 @@ public Procedure2 asin() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.atan(a.v()) ); + b.setV( (float) FastMath.atan(a.v()) ); } }; @@ -769,7 +770,7 @@ public Procedure2 atan() { { @Override public void call(Float32Member a, Float32Member b, Float32Member c) { - c.setV( (float) Math.atan2(a.v(), b.v()) ); + c.setV( (float) FastMath.atan2(a.v(), b.v()) ); } }; @@ -1021,7 +1022,7 @@ public Procedure2 sqrt() { { @Override public void call(Float32Member a, Float32Member b) { - b.setV( (float) Math.cbrt(a.v()) ); + b.setV( (float) FastMath.cbrt(a.v()) ); } }; @@ -1081,7 +1082,7 @@ public void call(Float32Member a, Float32Member b, Float32Member c) { c.setV(Float.NaN); } else - c.setV( (float) Math.pow(a.v(), b.v()) ); + c.setV( (float) FastMath.pow(a.v(), b.v()) ); } }; diff --git a/src/main/java/nom/bdezonia/zorbage/type/data/float64/complex/ComplexFloat64Algebra.java b/src/main/java/nom/bdezonia/zorbage/type/data/float64/complex/ComplexFloat64Algebra.java index c4058e578..19fad7d4f 100644 --- a/src/main/java/nom/bdezonia/zorbage/type/data/float64/complex/ComplexFloat64Algebra.java +++ b/src/main/java/nom/bdezonia/zorbage/type/data/float64/complex/ComplexFloat64Algebra.java @@ -39,6 +39,7 @@ import java.util.concurrent.ThreadLocalRandom; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round; import nom.bdezonia.zorbage.algorithm.Sinc; @@ -140,10 +141,10 @@ public void call(Integer power, ComplexFloat64Member a, ComplexFloat64Member b) assign().call(NaN_, b); return; } - double rToTheN = Math.pow(Math.hypot(a.r(), a.i()), power); + double rToTheN = FastMath.pow(FastMath.hypot(a.r(), a.i()), power); double nTheta = power * getArgument(a); - b.setR(rToTheN * Math.cos(nTheta)); - b.setI(rToTheN * Math.sin(nTheta)); + b.setR(rToTheN * FastMath.cos(nTheta)); + b.setI(rToTheN * FastMath.sin(nTheta)); } }; @@ -335,7 +336,7 @@ public Procedure2 conjugate() { { @Override public void call(ComplexFloat64Member a, Float64Member b) { - b.setV( Math.hypot(a.r(),a.i()) ); + b.setV( FastMath.hypot(a.r(),a.i()) ); } }; @@ -934,9 +935,9 @@ public Procedure2 coth() { { @Override public void call(ComplexFloat64Member a, ComplexFloat64Member b) { - double constant = Math.exp(a.r()); - b.setR( constant * Math.cos(a.i()) ); - b.setI( constant * Math.sin(a.i()) ); + double constant = FastMath.exp(a.r()); + b.setR( constant * FastMath.cos(a.i()) ); + b.setI( constant * FastMath.sin(a.i()) ); } }; @@ -967,7 +968,7 @@ public Procedure2 expm1() { { @Override public void call(ComplexFloat64Member a, ComplexFloat64Member b) { - double modulus = Math.hypot(a.r(), a.i()); + double modulus = FastMath.hypot(a.r(), a.i()); double argument = getArgument(a); b.setR( Math.log(modulus) ); b.setI( getPrincipalArgument(argument) ); @@ -998,7 +999,7 @@ else if (y == 0) { theta = Math.PI; } else // x && y both != 0 - theta = Math.atan2(y,x); + theta = FastMath.atan2(y,x); return theta; } diff --git a/src/main/java/nom/bdezonia/zorbage/type/data/float64/octonion/OctonionFloat64Algebra.java b/src/main/java/nom/bdezonia/zorbage/type/data/float64/octonion/OctonionFloat64Algebra.java index 3fb5b877f..23fb6e042 100644 --- a/src/main/java/nom/bdezonia/zorbage/type/data/float64/octonion/OctonionFloat64Algebra.java +++ b/src/main/java/nom/bdezonia/zorbage/type/data/float64/octonion/OctonionFloat64Algebra.java @@ -28,6 +28,7 @@ import java.util.concurrent.ThreadLocalRandom; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round; import nom.bdezonia.zorbage.algorithm.Sinc; @@ -817,10 +818,10 @@ public void call(OctonionFloat64Member a, OctonionFloat64Member b) { unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinch().call(z, z2); - double cos = Math.cos(a.r()); - double sin = Math.sin(a.r()); + double cos = FastMath.cos(a.r()); + double sin = FastMath.sin(a.r()); double sinhc_pi = z2.v(); - double cosh = Math.cosh(z.v()); + double cosh = FastMath.cosh(z.v()); double ws = cos * sinhc_pi; b.setR(sin * cosh); b.setI(ws * a.i()); @@ -849,10 +850,10 @@ public void call(OctonionFloat64Member a, OctonionFloat64Member b) { unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinch().call(z, z2); - double cos = Math.cos(a.r()); - double sin = Math.sin(a.r()); + double cos = FastMath.cos(a.r()); + double sin = FastMath.sin(a.r()); double sinhc_pi = z2.v(); - double cosh = Math.cosh(z.v()); + double cosh = FastMath.cosh(z.v()); double wc = -sin * sinhc_pi; b.setR(cos * cosh); b.setI(wc * a.i()); @@ -881,10 +882,10 @@ public void call(OctonionFloat64Member a, OctonionFloat64Member s, OctonionFloat unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinch().call(z, z2); - double cos = Math.cos(a.r()); - double sin = Math.sin(a.r()); + double cos = FastMath.cos(a.r()); + double sin = FastMath.sin(a.r()); double sinhc_pi = z2.v(); - double cosh = Math.cosh(z.v()); + double cosh = FastMath.cosh(z.v()); double ws = cos * sinhc_pi; double wc = -sin * sinhc_pi; s.setR(sin * cosh); @@ -936,12 +937,12 @@ public void call(OctonionFloat64Member a, OctonionFloat64Member b) { Float64Member z = new Float64Member(); Float64Member z2 = new Float64Member(); OctonionFloat64Member tmp = new OctonionFloat64Member(); - double u = Math.exp(a.r()); + double u = FastMath.exp(a.r()); unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinc().call(z, z2); double w = z2.v(); - b.setR(u * Math.cos(z.v())); + b.setR(u * FastMath.cos(z.v())); b.setI(u * w * a.i()); b.setJ(u * w * a.j()); b.setK(u * w * a.k()); diff --git a/src/main/java/nom/bdezonia/zorbage/type/data/float64/quaternion/QuaternionFloat64Algebra.java b/src/main/java/nom/bdezonia/zorbage/type/data/float64/quaternion/QuaternionFloat64Algebra.java index 3117ff273..b5486d6df 100644 --- a/src/main/java/nom/bdezonia/zorbage/type/data/float64/quaternion/QuaternionFloat64Algebra.java +++ b/src/main/java/nom/bdezonia/zorbage/type/data/float64/quaternion/QuaternionFloat64Algebra.java @@ -28,6 +28,7 @@ import java.util.concurrent.ThreadLocalRandom; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round; import nom.bdezonia.zorbage.algorithm.Sinc; @@ -465,12 +466,12 @@ public void call(QuaternionFloat64Member a, QuaternionFloat64Member b) { Float64Member z = new Float64Member(); Float64Member z2 = new Float64Member(); QuaternionFloat64Member tmp = new QuaternionFloat64Member(); - double u = Math.exp(a.r()); + double u = FastMath.exp(a.r()); unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinc().call(z, z2); double w = z2.v(); - b.setR(u * Math.cos(z.v())); + b.setR(u * FastMath.cos(z.v())); b.setI(u * w * a.i()); b.setJ(u * w * a.j()); b.setK(u * w * a.k()); @@ -663,10 +664,10 @@ public void call(QuaternionFloat64Member a, QuaternionFloat64Member b) { unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinch().call(z, z2); - double cos = Math.cos(a.r()); - double sin = Math.sin(a.r()); + double cos = FastMath.cos(a.r()); + double sin = FastMath.sin(a.r()); double sinhc_pi = z2.v(); - double cosh = Math.cosh(z.v()); + double cosh = FastMath.cosh(z.v()); double ws = cos * sinhc_pi; b.setR(sin * cosh); b.setI(ws * a.i()); @@ -691,10 +692,10 @@ public void call(QuaternionFloat64Member a, QuaternionFloat64Member b) { unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinch().call(z, z2); - double cos = Math.cos(a.r()); - double sin = Math.sin(a.r()); + double cos = FastMath.cos(a.r()); + double sin = FastMath.sin(a.r()); double sinhc_pi = z2.v(); - double cosh = Math.cosh(z.v()); + double cosh = FastMath.cosh(z.v()); double wc = -sin * sinhc_pi; b.setR(cos * cosh); b.setI(wc * a.i()); @@ -719,10 +720,10 @@ public void call(QuaternionFloat64Member a, QuaternionFloat64Member s, Quaternio unreal().call(a, tmp); norm().call(tmp, z); G.DBL.sinch().call(z, z2); - double cos = Math.cos(a.r()); - double sin = Math.sin(a.r()); + double cos = FastMath.cos(a.r()); + double sin = FastMath.sin(a.r()); double sinhc_pi = z2.v(); - double cosh = Math.cosh(z.v()); + double cosh = FastMath.cosh(z.v()); double ws = cos * sinhc_pi; double wc = -sin * sinhc_pi; s.setR(sin * cosh); diff --git a/src/main/java/nom/bdezonia/zorbage/type/data/float64/real/Float64Algebra.java b/src/main/java/nom/bdezonia/zorbage/type/data/float64/real/Float64Algebra.java index 559e770b4..45db756c7 100644 --- a/src/main/java/nom/bdezonia/zorbage/type/data/float64/real/Float64Algebra.java +++ b/src/main/java/nom/bdezonia/zorbage/type/data/float64/real/Float64Algebra.java @@ -28,6 +28,7 @@ import java.util.concurrent.ThreadLocalRandom; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Max; import nom.bdezonia.zorbage.algorithm.Min; @@ -393,7 +394,7 @@ public void call(Integer power, Float64Member a, Float64Member b) { b.setV(Double.NaN); } else - b.setV( Math.pow(a.v(), power) ); + b.setV( FastMath.pow(a.v(), power) ); } }; @@ -463,7 +464,7 @@ public Procedure1 E() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.exp(a.v()) ); + b.setV( FastMath.exp(a.v()) ); } }; @@ -477,7 +478,7 @@ public Procedure2 exp() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.expm1(a.v()) ); + b.setV( FastMath.expm1(a.v()) ); } }; @@ -517,7 +518,7 @@ public Procedure2 log1p() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.cos(a.v()) ); + b.setV( FastMath.cos(a.v()) ); } }; @@ -531,7 +532,7 @@ public Procedure2 cos() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.sin(a.v()) ); + b.setV( FastMath.sin(a.v()) ); } }; @@ -579,7 +580,7 @@ public Procedure3 sinAndCos() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.tan(a.v()) ); + b.setV( FastMath.tan(a.v()) ); } }; @@ -595,7 +596,7 @@ public Procedure2 tan() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( 1.0 / Math.sin(a.v()) ); + b.setV( 1.0 / FastMath.sin(a.v()) ); } }; @@ -611,7 +612,7 @@ public Procedure2 csc() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( 1.0 / Math.cos(a.v()) ); + b.setV( 1.0 / FastMath.cos(a.v()) ); } }; @@ -627,7 +628,7 @@ public Procedure2 sec() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( 1.0 / Math.tan(a.v()) ); + b.setV( 1.0 / FastMath.tan(a.v()) ); } }; @@ -641,7 +642,7 @@ public Procedure2 cot() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.cosh(a.v()) ); + b.setV( FastMath.cosh(a.v()) ); } }; @@ -655,7 +656,7 @@ public Procedure2 cosh() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.sinh(a.v()) ); + b.setV( FastMath.sinh(a.v()) ); } }; @@ -700,7 +701,7 @@ public Procedure3 sinhAndCosh() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.tanh(a.v()) ); + b.setV( FastMath.tanh(a.v()) ); } }; @@ -716,7 +717,7 @@ public Procedure2 tanh() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( 1.0 / Math.sinh(a.v()) ); + b.setV( 1.0 / FastMath.sinh(a.v()) ); } }; @@ -732,7 +733,7 @@ public Procedure2 csch() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( 1.0 / Math.cosh(a.v()) ); + b.setV( 1.0 / FastMath.cosh(a.v()) ); } }; @@ -748,7 +749,7 @@ public Procedure2 sech() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( 1.0 / Math.tanh(a.v()) ); + b.setV( 1.0 / FastMath.tanh(a.v()) ); } }; @@ -762,7 +763,7 @@ public Procedure2 coth() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.acos(a.v()) ); + b.setV( FastMath.acos(a.v()) ); } }; @@ -776,7 +777,7 @@ public Procedure2 acos() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.asin(a.v()) ); + b.setV( FastMath.asin(a.v()) ); } }; @@ -790,7 +791,7 @@ public Procedure2 asin() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.atan(a.v()) ); + b.setV( FastMath.atan(a.v()) ); } }; @@ -804,7 +805,7 @@ public Procedure2 atan() { { @Override public void call(Float64Member a, Float64Member b, Float64Member c) { - c.setV( Math.atan2(a.v(), b.v()) ); + c.setV( FastMath.atan2(a.v(), b.v()) ); } }; @@ -1056,7 +1057,7 @@ public Procedure2 sqrt() { { @Override public void call(Float64Member a, Float64Member b) { - b.setV( Math.cbrt(a.v()) ); + b.setV( FastMath.cbrt(a.v()) ); } }; @@ -1116,7 +1117,7 @@ public void call(Float64Member a, Float64Member b, Float64Member c) { c.setV(Double.NaN); } else - c.setV( Math.pow(a.v(), b.v()) ); + c.setV( FastMath.pow(a.v(), b.v()) ); } }; diff --git a/src/test/java/nom/bdezonia/zorbage/algorithm/TestExponentialCalculation.java b/src/test/java/nom/bdezonia/zorbage/algorithm/TestExponentialCalculation.java index e3325d206..0771a873b 100644 --- a/src/test/java/nom/bdezonia/zorbage/algorithm/TestExponentialCalculation.java +++ b/src/test/java/nom/bdezonia/zorbage/algorithm/TestExponentialCalculation.java @@ -51,7 +51,7 @@ public void test1() { ExponentialCalculation.compute(G.DBL, fraction, base, power, v); - assertEquals(0.5*4*4*4, v.v(), 0); + assertEquals(0.5*4*4*4, v.v(), 0.0000000000001); } @Test diff --git a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinc.java b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinc.java index 986a37348..9a0ee54b7 100644 --- a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinc.java +++ b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinc.java @@ -30,6 +30,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -51,31 +52,31 @@ public void test() { x.setV(Math.PI/4); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(Math.PI/4)/(Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(Math.PI/4)/(Math.PI/4), result.v(), 0); x.setV(Math.PI/2); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(Math.PI/2)/(Math.PI/2), result.v(), 0); + assertEquals(FastMath.sin(Math.PI/2)/(Math.PI/2), result.v(), 0); x.setV(3*Math.PI/4); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); x.setV(Math.PI); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(Math.PI)/(Math.PI), result.v(), 0); + assertEquals(FastMath.sin(Math.PI)/(Math.PI), result.v(), 0); x.setV(5*Math.PI/4); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); x.setV(3*Math.PI/2); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); + assertEquals(FastMath.sin(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); x.setV(7*Math.PI/4); Sinc.compute(G.DBL, x, result); - assertEquals(Math.sin(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); } } diff --git a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinch.java b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinch.java index 4e65b3d84..3cf54b1cd 100644 --- a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinch.java +++ b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinch.java @@ -30,6 +30,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -51,31 +52,31 @@ public void test() { x.setV(Math.PI/4); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(Math.PI/4)/(Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(Math.PI/4)/(Math.PI/4), result.v(), 0); x.setV(Math.PI/2); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(Math.PI/2)/(Math.PI/2), result.v(), 0); + assertEquals(FastMath.sinh(Math.PI/2)/(Math.PI/2), result.v(), 0); x.setV(3*Math.PI/4); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); x.setV(Math.PI); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(Math.PI)/(Math.PI), result.v(), 0); + assertEquals(FastMath.sinh(Math.PI)/(Math.PI), result.v(), 0); x.setV(5*Math.PI/4); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); x.setV(3*Math.PI/2); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); + assertEquals(FastMath.sinh(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); x.setV(7*Math.PI/4); Sinch.compute(G.DBL, x, result); - assertEquals(Math.sinh(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); } } diff --git a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinchpi.java b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinchpi.java index 45c7bdf89..0dcd1b87d 100644 --- a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinchpi.java +++ b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSinchpi.java @@ -30,6 +30,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -51,31 +52,31 @@ public void test() { x.setV(1.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(Math.PI/4)/(Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(Math.PI/4)/(Math.PI/4), result.v(), 0); x.setV(2.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(Math.PI/2)/(Math.PI/2), result.v(), 0); + assertEquals(FastMath.sinh(Math.PI/2)/(Math.PI/2), result.v(), 0); x.setV(3.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); x.setV(4.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(Math.PI)/(Math.PI), result.v(), 0); + assertEquals(FastMath.sinh(Math.PI)/(Math.PI), result.v(), 0); x.setV(5.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); x.setV(6.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); + assertEquals(FastMath.sinh(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); x.setV(7.0/4); Sinchpi.compute(G.DBL, x, result); - assertEquals(Math.sinh(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sinh(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); } } diff --git a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSincpi.java b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSincpi.java index 1c55636a4..c36a1fc5a 100644 --- a/src/test/java/nom/bdezonia/zorbage/algorithm/TestSincpi.java +++ b/src/test/java/nom/bdezonia/zorbage/algorithm/TestSincpi.java @@ -30,6 +30,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -51,31 +52,31 @@ public void test() { x.setV(1.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(Math.PI/4)/(Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(Math.PI/4)/(Math.PI/4), result.v(), 0); x.setV(2.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(Math.PI/2)/(Math.PI/2), result.v(), 0); + assertEquals(FastMath.sin(Math.PI/2)/(Math.PI/2), result.v(), 0); x.setV(3.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(3*Math.PI/4)/(3*Math.PI/4), result.v(), 0); x.setV(4.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(Math.PI)/(Math.PI), result.v(), 0); + assertEquals(FastMath.sin(Math.PI)/(Math.PI), result.v(), 0); x.setV(5.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(5*Math.PI/4)/(5*Math.PI/4), result.v(), 0); x.setV(6.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); + assertEquals(FastMath.sin(3*Math.PI/2)/(3*Math.PI/2), result.v(), 0); x.setV(7.0/4); Sincpi.compute(G.DBL, x, result); - assertEquals(Math.sin(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); + assertEquals(FastMath.sin(7*Math.PI/4)/(7*Math.PI/4), result.v(), 0); } } diff --git a/src/test/java/nom/bdezonia/zorbage/type/data/float64/complex/TestFloat64Complex.java b/src/test/java/nom/bdezonia/zorbage/type/data/float64/complex/TestFloat64Complex.java index d85ef44b3..be1c3b2f9 100644 --- a/src/test/java/nom/bdezonia/zorbage/type/data/float64/complex/TestFloat64Complex.java +++ b/src/test/java/nom/bdezonia/zorbage/type/data/float64/complex/TestFloat64Complex.java @@ -32,6 +32,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round.Mode; import nom.bdezonia.zorbage.type.data.float64.complex.ComplexFloat64Member; @@ -345,7 +346,7 @@ public void mathematicalMethods() { a.setR(Math.PI/2); a.setI(0); G.CDBL.tan().call(a, b); - assertEquals(Math.tan(Math.PI/2), b.r(), tol); + assertEquals(FastMath.tan(Math.PI/2), b.r(), tol); assertEquals(0, b.i(), tol); // G.CDBL.tanh(); diff --git a/src/test/java/nom/bdezonia/zorbage/type/data/float64/octonion/TestOctonionFloat64Algebra.java b/src/test/java/nom/bdezonia/zorbage/type/data/float64/octonion/TestOctonionFloat64Algebra.java index 201e690c8..1ede7e568 100644 --- a/src/test/java/nom/bdezonia/zorbage/type/data/float64/octonion/TestOctonionFloat64Algebra.java +++ b/src/test/java/nom/bdezonia/zorbage/type/data/float64/octonion/TestOctonionFloat64Algebra.java @@ -32,6 +32,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round.Mode; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -196,7 +197,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.cos().call(a, b); - assertEquals(Math.cos(Math.PI/2), b.r(), 0); + assertEquals(FastMath.cos(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -215,7 +216,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.cosh().call(a, b); - assertEquals(Math.cosh(Math.PI/2), b.r(), 0); + assertEquals(FastMath.cosh(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -253,7 +254,7 @@ public void mathematicalMethods() { // G.ODBL.E(); G.ODBL.E().call(a); - assertEquals(Math.E, a.r(), 0); + assertEquals(FastMath.E, a.r(), 0); assertEquals(0, a.i(), 0); assertEquals(0, a.j(), 0); assertEquals(0, a.k(), 0); @@ -272,7 +273,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.exp().call(a,b); - assertEquals(Math.exp(2), b.r(), 0); + assertEquals(FastMath.exp(2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -556,7 +557,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.sin().call(a, b); - assertEquals(Math.sin(Math.PI/2), b.r(), 0); + assertEquals(FastMath.sin(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -585,7 +586,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.sinh().call(a, b); - assertEquals(Math.sinh(Math.PI/2), b.r(), 0); + assertEquals(FastMath.sinh(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -652,7 +653,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.tan().call(a, b); - assertEquals(Math.tan(Math.PI/2), b.r(), 0); + assertEquals(FastMath.tan(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -671,7 +672,7 @@ public void mathematicalMethods() { a.setJ0(0); a.setK0(0); G.ODBL.tanh().call(a, b); - assertEquals(Math.tanh(Math.PI/2), b.r(), tol); + assertEquals(FastMath.tanh(Math.PI/2), b.r(), tol); assertEquals(0, b.i(), tol); assertEquals(0, b.j(), tol); assertEquals(0, b.k(), tol); diff --git a/src/test/java/nom/bdezonia/zorbage/type/data/float64/quaternion/TestQuaternionFloat64Algebra.java b/src/test/java/nom/bdezonia/zorbage/type/data/float64/quaternion/TestQuaternionFloat64Algebra.java index d3b24cc35..a1c79a981 100644 --- a/src/test/java/nom/bdezonia/zorbage/type/data/float64/quaternion/TestQuaternionFloat64Algebra.java +++ b/src/test/java/nom/bdezonia/zorbage/type/data/float64/quaternion/TestQuaternionFloat64Algebra.java @@ -32,6 +32,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round.Mode; import nom.bdezonia.zorbage.type.data.float64.real.Float64Member; @@ -199,7 +200,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.cos().call(a, b); - assertEquals(Math.cos(Math.PI/2), b.r(), 0); + assertEquals(FastMath.cos(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -210,7 +211,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.cosh().call(a, b); - assertEquals(Math.cosh(Math.PI/2), b.r(), 0); + assertEquals(FastMath.cosh(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -243,7 +244,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.exp().call(a,b); - assertEquals(Math.exp(2), b.r(), 0); + assertEquals(FastMath.exp(2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -423,7 +424,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.sin().call(a, b); - assertEquals(Math.sin(Math.PI/2), b.r(), 0); + assertEquals(FastMath.sin(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -444,7 +445,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.sinh().call(a, b); - assertEquals(Math.sinh(Math.PI/2), b.r(), 0); + assertEquals(FastMath.sinh(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -483,7 +484,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.tan().call(a, b); - assertEquals(Math.tan(Math.PI/2), b.r(), 0); + assertEquals(FastMath.tan(Math.PI/2), b.r(), 0); assertEquals(0, b.i(), 0); assertEquals(0, b.j(), 0); assertEquals(0, b.k(), 0); @@ -494,7 +495,7 @@ public void mathematicalMethods() { a.setJ(0); a.setK(0); G.QDBL.tanh().call(a, b); - assertEquals(Math.tanh(Math.PI/2), b.r(), tol); + assertEquals(FastMath.tanh(Math.PI/2), b.r(), tol); assertEquals(0, b.i(), tol); assertEquals(0, b.j(), tol); assertEquals(0, b.k(), tol); diff --git a/src/test/java/nom/bdezonia/zorbage/type/data/float64/real/TestFloat64Algebra.java b/src/test/java/nom/bdezonia/zorbage/type/data/float64/real/TestFloat64Algebra.java index 33dce1b2e..76f8fb202 100644 --- a/src/test/java/nom/bdezonia/zorbage/type/data/float64/real/TestFloat64Algebra.java +++ b/src/test/java/nom/bdezonia/zorbage/type/data/float64/real/TestFloat64Algebra.java @@ -32,6 +32,7 @@ import org.junit.Test; +import net.jafama.FastMath; import nom.bdezonia.zorbage.algebras.G; import nom.bdezonia.zorbage.algorithm.Round.Mode; @@ -261,7 +262,7 @@ public void mathematicalMethods() { // G.CDBL.acos(); a.setV(Math.PI/2); G.DBL.acos().call(a, b); - assertEquals(Math.acos(Math.PI/2), b.v(), 0); + assertEquals(FastMath.acos(Math.PI/2), b.v(), 0); // G.CDBL.acosh(); @@ -286,7 +287,7 @@ public void mathematicalMethods() { // G.CDBL.asin(); a.setV(Math.PI/2); G.DBL.asin().call(a, b); - assertEquals(Math.asin(Math.PI/2), b.v(), 0); + assertEquals(FastMath.asin(Math.PI/2), b.v(), 0); // G.CDBL.asinh(); @@ -298,7 +299,7 @@ public void mathematicalMethods() { // G.CDBL.atan(); a.setV(Math.PI/2); G.DBL.atan().call(a, b); - assertEquals(Math.atan(Math.PI/2), b.v(), 0); + assertEquals(FastMath.atan(Math.PI/2), b.v(), 0); // G.CDBL.atanh(); @@ -327,12 +328,12 @@ public void mathematicalMethods() { // G.CDBL.cos(); a.setV(Math.PI/2); G.DBL.cos().call(a, b); - assertEquals(Math.cos(Math.PI/2), b.v(), tol); + assertEquals(FastMath.cos(Math.PI/2), b.v(), tol); // G.CDBL.cosh(); a.setV(Math.PI/2); G.DBL.cosh().call(a, b); - assertEquals(Math.cosh(Math.PI/2), b.v(), tol); + assertEquals(FastMath.cosh(Math.PI/2), b.v(), tol); // G.CDBL.cot(); @@ -355,12 +356,12 @@ public void mathematicalMethods() { // G.CDBL.exp(); a.setV(4); G.DBL.exp().call(a, b); - assertEquals(Math.exp(4), b.v(), tol); + assertEquals(FastMath.exp(4), b.v(), tol); // G.CDBL.expm1(); a.setV(4); G.DBL.expm1().call(a, b); - assertEquals(Math.expm1(4), b.v(), tol); + assertEquals(FastMath.expm1(4), b.v(), tol); // G.CDBL.infinite(); a = G.DBL.construct(); @@ -476,7 +477,7 @@ public void mathematicalMethods() { // G.CDBL.sin(); a.setV(Math.PI/2); G.DBL.sin().call(a, b); - assertEquals(Math.sin(Math.PI/2), b.v(), tol); + assertEquals(FastMath.sin(Math.PI/2), b.v(), tol); // G.CDBL.sinAndCos(); @@ -491,7 +492,7 @@ public void mathematicalMethods() { // G.CDBL.sinh(); a.setV(Math.PI/2); G.DBL.sinh().call(a, b); - assertEquals(Math.sinh(Math.PI/2), b.v(), tol); + assertEquals(FastMath.sinh(Math.PI/2), b.v(), tol); // G.CDBL.sinhAndCosh(); @@ -509,12 +510,12 @@ public void mathematicalMethods() { // G.CDBL.tan(); a.setV(Math.PI/2); G.DBL.tan().call(a, b); - assertEquals(Math.tan(Math.PI/2), b.v(), tol); + assertEquals(FastMath.tan(Math.PI/2), b.v(), tol); // G.CDBL.tanh(); a.setV(Math.PI/2); G.DBL.tanh().call(a, b); - assertEquals(Math.tanh(Math.PI/2), b.v(), tol); + assertEquals(FastMath.tanh(Math.PI/2), b.v(), tol); // G.CDBL.unity(); a = new Float64Member(0.1);