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,ComplexFloat64Me
for (long L = 2; L <= aSize; L = L+L) {
for (long k = 0; k < L/2; k++) {
double kth = -2 * k * Math.PI / L;
- w.setR(Math.cos(kth));
- w.setI(Math.sin(kth));
+ w.setR(FastMath.cos(kth));
+ w.setI(FastMath.sin(kth));
for (long j = 0; j < aSize/L; j++) {
b.get(j*L + k + L/2, tmp1);
Algebra.multiply().call(w, tmp1, tao);
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionCylindrical.java b/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionCylindrical.java
index 8ed538ca8..d5ae0c98e 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionCylindrical.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionCylindrical.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.octonion.OctonionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -50,8 +51,8 @@ public class OctonionCylindrical {
*/
public static void compute(double rad, double angle, double j, double k, double l, double i0, double j0, double k0, OctonionFloat64Member out) {
- double tmpAngC = Math.cos(angle);
- double tmpAngS = Math.sin(angle);
+ double tmpAngC = FastMath.cos(angle);
+ double tmpAngS = FastMath.sin(angle);
double r = rad * tmpAngC;
double i = rad * tmpAngS;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionMultiPolar.java b/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionMultiPolar.java
index ef3a2d00e..e6981b63f 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionMultiPolar.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionMultiPolar.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.octonion.OctonionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -50,14 +51,14 @@ public class OctonionMultiPolar {
*/
public static void compute(double rho1, double theta1, double rho2, double theta2, double rho3, double theta3, double rho4, double theta4, OctonionFloat64Member out) {
- double tmpTh1C = Math.cos(theta1);
- double tmpTh1S = Math.sin(theta1);
- double tmpTh2C = Math.cos(theta2);
- double tmpTh2S = Math.sin(theta2);
- double tmpTh3C = Math.cos(theta3);
- double tmpTh3S = Math.sin(theta3);
- double tmpTh4C = Math.cos(theta4);
- double tmpTh4S = Math.sin(theta4);
+ double tmpTh1C = FastMath.cos(theta1);
+ double tmpTh1S = FastMath.sin(theta1);
+ double tmpTh2C = FastMath.cos(theta2);
+ double tmpTh2S = FastMath.sin(theta2);
+ double tmpTh3C = FastMath.cos(theta3);
+ double tmpTh3S = FastMath.sin(theta3);
+ double tmpTh4C = FastMath.cos(theta4);
+ double tmpTh4S = FastMath.sin(theta4);
double r = rho1 * tmpTh1C;
double i = rho1 * tmpTh1S;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionSpherical.java b/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionSpherical.java
index ff4c7a4b7..b16ea3176 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionSpherical.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/OctonionSpherical.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.octonion.OctonionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -50,20 +51,20 @@ public class OctonionSpherical {
*/
public static void compute(double rho, double theta, double phi1, double phi2, double phi3, double phi4, double phi5, double phi6, OctonionFloat64Member out) {
- double tmpThC = Math.cos(theta);
- double tmpThS = Math.sin(theta);
- double tmpPhi1C = Math.cos(phi1);
- double tmpPhi1S = Math.sin(phi1);
- double tmpPhi2C = Math.cos(phi2);
- double tmpPhi2S = Math.sin(phi2);
- double tmpPhi3C = Math.cos(phi3);
- double tmpPhi3S = Math.sin(phi3);
- double tmpPhi4C = Math.cos(phi4);
- double tmpPhi4S = Math.sin(phi4);
- double tmpPhi5C = Math.cos(phi5);
- double tmpPhi5S = Math.sin(phi5);
- double tmpPhi6C = Math.cos(phi6);
- double tmpPhi6S = Math.sin(phi6);
+ double tmpThC = FastMath.cos(theta);
+ double tmpThS = FastMath.sin(theta);
+ double tmpPhi1C = FastMath.cos(phi1);
+ double tmpPhi1S = FastMath.sin(phi1);
+ double tmpPhi2C = FastMath.cos(phi2);
+ double tmpPhi2S = FastMath.sin(phi2);
+ double tmpPhi3C = FastMath.cos(phi3);
+ double tmpPhi3S = FastMath.sin(phi3);
+ double tmpPhi4C = FastMath.cos(phi4);
+ double tmpPhi4S = FastMath.sin(phi4);
+ double tmpPhi5C = FastMath.cos(phi5);
+ double tmpPhi5S = FastMath.sin(phi5);
+ double tmpPhi6C = FastMath.cos(phi6);
+ double tmpPhi6S = FastMath.sin(phi6);
double k0 = tmpPhi6S;
double j0 = tmpPhi5S * tmpPhi6C;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindrical.java b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindrical.java
index 7feb4ecc8..40dbeb55d 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindrical.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindrical.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.quaternion.QuaternionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -46,8 +47,8 @@ public class QuaternionCylindrical {
*/
public static void compute(double rad, double angle, double j, double k, QuaternionFloat64Member out) {
- double tmpAngC = Math.cos(angle);
- double tmpAngS = Math.sin(angle);
+ double tmpAngC = FastMath.cos(angle);
+ double tmpAngS = FastMath.sin(angle);
double r = rad * tmpAngC;
double i = rad * tmpAngS;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindroSpherical.java b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindroSpherical.java
index 29d16a192..12579e092 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindroSpherical.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionCylindroSpherical.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.quaternion.QuaternionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -46,10 +47,10 @@ public class QuaternionCylindroSpherical {
*/
public static void compute(double r, double rad, double longitude, double latitude, QuaternionFloat64Member out) {
- double tmpLngC = Math.cos(longitude);
- double tmpLngS = Math.sin(longitude);
- double tmpLatC = Math.cos(latitude);
- double tmpLatS = Math.sin(latitude);
+ double tmpLngC = FastMath.cos(longitude);
+ double tmpLngS = FastMath.sin(longitude);
+ double tmpLatC = FastMath.cos(latitude);
+ double tmpLatS = FastMath.sin(latitude);
double i = rad * tmpLngC * tmpLatC;
double j = rad * tmpLngS * tmpLatC;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionMultiPolar.java b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionMultiPolar.java
index 4a2b66a13..486a8af68 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionMultiPolar.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionMultiPolar.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.quaternion.QuaternionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -46,10 +47,10 @@ public class QuaternionMultiPolar {
*/
public static void compute(double rho1, double theta1, double rho2, double theta2, QuaternionFloat64Member out) {
- double tmpTh1C = Math.cos(theta1);
- double tmpTh1S = Math.sin(theta1);
- double tmpTh2C = Math.cos(theta2);
- double tmpTh2S = Math.sin(theta2);
+ double tmpTh1C = FastMath.cos(theta1);
+ double tmpTh1S = FastMath.sin(theta1);
+ double tmpTh2C = FastMath.cos(theta2);
+ double tmpTh2S = FastMath.sin(theta2);
double r = rho1 * tmpTh1C;
double i = rho1 * tmpTh1S;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSemiPolar.java b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSemiPolar.java
index c4a260ac6..1992d7ee4 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSemiPolar.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSemiPolar.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.quaternion.QuaternionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -46,12 +47,12 @@ public class QuaternionSemiPolar {
*/
public static void compute(double rho, double alpha, double theta1, double theta2, QuaternionFloat64Member out) {
- double tmpAlC = Math.cos(alpha);
- double tmpAlS = Math.sin(alpha);
- double tmpTh1C = Math.cos(theta1);
- double tmpTh1S = Math.sin(theta1);
- double tmpTh2C = Math.cos(theta2);
- double tmpTh2S = Math.sin(theta2);
+ double tmpAlC = FastMath.cos(alpha);
+ double tmpAlS = FastMath.sin(alpha);
+ double tmpTh1C = FastMath.cos(theta1);
+ double tmpTh1S = FastMath.sin(theta1);
+ double tmpTh2C = FastMath.cos(theta2);
+ double tmpTh2S = FastMath.sin(theta2);
double r = tmpAlC * tmpTh1C;
double i = tmpAlC * tmpTh1S;
diff --git a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSpherical.java b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSpherical.java
index fd228479a..dbcc1c28d 100644
--- a/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSpherical.java
+++ b/src/main/java/nom/bdezonia/zorbage/algorithm/QuaternionSpherical.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.algorithm;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.type.data.float64.quaternion.QuaternionFloat64Member;
import nom.bdezonia.zorbage.type.data.float64.real.Float64Member;
@@ -46,12 +47,12 @@ public class QuaternionSpherical {
*/
public static void compute(double rho, double theta, double phi1, double phi2, QuaternionFloat64Member out) {
- double tmpThC = Math.cos(theta);
- double tmpThS = Math.sin(theta);
- double tmpPhi1C = Math.cos(phi1);
- double tmpPhi1S = Math.sin(phi1);
- double tmpPhi2C = Math.cos(phi2);
- double tmpPhi2S = Math.sin(phi2);
+ double tmpThC = FastMath.cos(theta);
+ double tmpThS = FastMath.sin(theta);
+ double tmpPhi1C = FastMath.cos(phi1);
+ double tmpPhi1S = FastMath.sin(phi1);
+ double tmpPhi2C = FastMath.cos(phi2);
+ double tmpPhi2S = FastMath.sin(phi2);
double r = tmpThC * tmpPhi1C * tmpPhi2C;
double i = tmpThS * tmpPhi1C * tmpPhi2C;
diff --git a/src/main/java/nom/bdezonia/zorbage/sampling/SamplingCylindricalRealGrid.java b/src/main/java/nom/bdezonia/zorbage/sampling/SamplingCylindricalRealGrid.java
index cb1af73a1..73b258672 100644
--- a/src/main/java/nom/bdezonia/zorbage/sampling/SamplingCylindricalRealGrid.java
+++ b/src/main/java/nom/bdezonia/zorbage/sampling/SamplingCylindricalRealGrid.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.sampling;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.misc.RealUtils;
/**
@@ -150,8 +151,8 @@ public void next(RealIndex value) {
final double radius = r + tr*dr;
final double angle = theta + ttheta*dtheta;
final double height = z + tz*dz;
- 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
value.set(2, height); // zcoord
}
diff --git a/src/main/java/nom/bdezonia/zorbage/sampling/SamplingPolarRealGrid.java b/src/main/java/nom/bdezonia/zorbage/sampling/SamplingPolarRealGrid.java
index 7a2ad1813..0527f8b2f 100644
--- a/src/main/java/nom/bdezonia/zorbage/sampling/SamplingPolarRealGrid.java
+++ b/src/main/java/nom/bdezonia/zorbage/sampling/SamplingPolarRealGrid.java
@@ -26,6 +26,7 @@
*/
package nom.bdezonia.zorbage.sampling;
+import net.jafama.FastMath;
import nom.bdezonia.zorbage.misc.RealUtils;
/**
@@ -79,7 +80,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.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);