89e9beac74
Fix pkg-plist PR: ports/71875 Submitted by: Ports Fury
215 lines
8.4 KiB
C++
215 lines
8.4 KiB
C++
--- src/Math_functions.cpp.orig Sun Dec 8 05:04:06 2002
|
|
+++ src/Math_functions.cpp Sun Sep 12 01:04:56 2004
|
|
@@ -15,9 +15,9 @@
|
|
|
|
math_node mpl_neg(math_node a)
|
|
{
|
|
- if (a.type==MN_REAL) a.R=-a.R;
|
|
- if (a.type==MN_COMPLEX) a.R=-a.R, a.I=-a.I;
|
|
- if (a.type==MN_VECTOR) a.I=-a.I, a.J=-a.J, a.K=-a.K;
|
|
+ if (a.type==MN_REAL) a.mpl.m.R=-a.mpl.m.R;
|
|
+ if (a.type==MN_COMPLEX) a.mpl.m.R=-a.mpl.m.R, a.mpl.m.I=-a.mpl.m.I;
|
|
+ if (a.type==MN_VECTOR) a.mpl.m.I=-a.mpl.m.I, a.mpl.m.J=-a.mpl.m.J, a.mpl.m.K=-a.mpl.m.K;
|
|
return(a);
|
|
}
|
|
|
|
@@ -28,17 +28,17 @@
|
|
ans.type=MN_NULL;
|
|
|
|
if (a.type==MN_REAL) {
|
|
- if (b.type==MN_REAL) ans.R=a.R+b.R, ans.type=MN_REAL;
|
|
- else if (b.type==MN_COMPLEX) ans.R=a.R+b.R, ans.I=b.I, ans.type=MN_COMPLEX;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R+b.mpl.m.R, ans.type=MN_REAL;
|
|
+ else if (b.type==MN_COMPLEX) ans.mpl.m.R=a.mpl.m.R+b.mpl.m.R, ans.mpl.m.I=b.mpl.m.I, ans.type=MN_COMPLEX;
|
|
}
|
|
else
|
|
if (a.type==MN_COMPLEX) {
|
|
- if (b.type==MN_REAL) ans.R=a.R+b.R, ans.I=a.I, ans.type=MN_COMPLEX;
|
|
- else if (b.type==MN_COMPLEX) ans.R=a.R+b.R, ans.I=a.I+b.I, ans.type=MN_COMPLEX;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R+b.mpl.m.R, ans.mpl.m.I=a.mpl.m.I, ans.type=MN_COMPLEX;
|
|
+ else if (b.type==MN_COMPLEX) ans.mpl.m.R=a.mpl.m.R+b.mpl.m.R, ans.mpl.m.I=a.mpl.m.I+b.mpl.m.I, ans.type=MN_COMPLEX;
|
|
}
|
|
else
|
|
if (a.type==MN_VECTOR) {
|
|
- if (b.type==MN_VECTOR) ans.I=a.I+b.I, ans.J=a.J+b.J, ans.K=a.K+b.K, ans.type=MN_VECTOR;
|
|
+ if (b.type==MN_VECTOR) ans.mpl.m.I=a.mpl.m.I+b.mpl.m.I, ans.mpl.m.J=a.mpl.m.J+b.mpl.m.J, ans.mpl.m.K=a.mpl.m.K+b.mpl.m.K, ans.type=MN_VECTOR;
|
|
}
|
|
|
|
return(ans);
|
|
@@ -51,17 +51,17 @@
|
|
ans.type=MN_NULL;
|
|
|
|
if (a.type==MN_REAL) {
|
|
- if (b.type==MN_REAL) ans.R=a.R-b.R, ans.type=MN_REAL;
|
|
- else if (b.type==MN_COMPLEX) ans.R=a.R-b.R, ans.I=0-b.I, ans.type=MN_COMPLEX;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R-b.mpl.m.R, ans.type=MN_REAL;
|
|
+ else if (b.type==MN_COMPLEX) ans.mpl.m.R=a.mpl.m.R-b.mpl.m.R, ans.mpl.m.I=0-b.mpl.m.I, ans.type=MN_COMPLEX;
|
|
}
|
|
else
|
|
if (a.type==MN_COMPLEX) {
|
|
- if (b.type==MN_REAL) ans.R=a.R-b.R, ans.I=a.I, ans.type=MN_COMPLEX;
|
|
- else if (b.type==MN_COMPLEX) ans.R=a.R-b.R, ans.I=a.I-b.I, ans.type=MN_COMPLEX;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R-b.mpl.m.R, ans.mpl.m.I=a.mpl.m.I, ans.type=MN_COMPLEX;
|
|
+ else if (b.type==MN_COMPLEX) ans.mpl.m.R=a.mpl.m.R-b.mpl.m.R, ans.mpl.m.I=a.mpl.m.I-b.mpl.m.I, ans.type=MN_COMPLEX;
|
|
}
|
|
else
|
|
if (a.type==MN_VECTOR) {
|
|
- if (b.type==MN_VECTOR) ans.I=a.I-b.I, ans.J=a.J-b.J, ans.K=a.K-b.K, ans.type=MN_VECTOR;
|
|
+ if (b.type==MN_VECTOR) ans.mpl.m.I=a.mpl.m.I-b.mpl.m.I, ans.mpl.m.J=a.mpl.m.J-b.mpl.m.J, ans.mpl.m.K=a.mpl.m.K-b.mpl.m.K, ans.type=MN_VECTOR;
|
|
}
|
|
|
|
return(ans);
|
|
@@ -73,19 +73,19 @@
|
|
ans.type=MN_NULL;
|
|
|
|
if (a.type==MN_REAL) {
|
|
- if (b.type==MN_REAL) ans.R=a.R*b.R, ans.type=MN_REAL;
|
|
- else if (b.type==MN_COMPLEX) ans.R=a.R*b.R, ans.I=a.R*b.I, ans.type=MN_COMPLEX;
|
|
- else if (b.type==MN_VECTOR) ans.I=a.R*b.I, ans.J=a.R*b.J, ans.K=a.R*b.K, ans.type=MN_VECTOR;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R*b.mpl.m.R, ans.type=MN_REAL;
|
|
+ else if (b.type==MN_COMPLEX) ans.mpl.m.R=a.mpl.m.R*b.mpl.m.R, ans.mpl.m.I=a.mpl.m.R*b.mpl.m.I, ans.type=MN_COMPLEX;
|
|
+ else if (b.type==MN_VECTOR) ans.mpl.m.I=a.mpl.m.R*b.mpl.m.I, ans.mpl.m.J=a.mpl.m.R*b.mpl.m.J, ans.mpl.m.K=a.mpl.m.R*b.mpl.m.K, ans.type=MN_VECTOR;
|
|
}
|
|
else
|
|
if (a.type==MN_COMPLEX) {
|
|
- if (b.type==MN_REAL) ans.R=a.R*b.R, ans.I=a.I*b.R, ans.type=MN_COMPLEX;
|
|
- else if (b.type==MN_COMPLEX) ans.R=a.R*b.R-a.I*b.I, ans.I=a.R*b.I+a.I*b.R, ans.type=MN_COMPLEX;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R*b.mpl.m.R, ans.mpl.m.I=a.mpl.m.I*b.mpl.m.R, ans.type=MN_COMPLEX;
|
|
+ else if (b.type==MN_COMPLEX) ans.mpl.m.R=a.mpl.m.R*b.mpl.m.R-a.mpl.m.I*b.mpl.m.I, ans.mpl.m.I=a.mpl.m.R*b.mpl.m.I+a.mpl.m.I*b.mpl.m.R, ans.type=MN_COMPLEX;
|
|
}
|
|
else
|
|
if (a.type==MN_VECTOR) { // Dot product
|
|
- if (b.type==MN_VECTOR) ans.R=a.I*b.I+a.J*b.J+a.K*b.K, ans.type=MN_REAL;
|
|
- else if (b.type==MN_REAL) ans.I=a.I*b.R, ans.J=a.J*b.R, ans.K=a.K*b.R, ans.type=MN_VECTOR;
|
|
+ if (b.type==MN_VECTOR) ans.mpl.m.R=a.mpl.m.I*b.mpl.m.I+a.mpl.m.J*b.mpl.m.J+a.mpl.m.K*b.mpl.m.K, ans.type=MN_REAL;
|
|
+ else if (b.type==MN_REAL) ans.mpl.m.I=a.mpl.m.I*b.mpl.m.R, ans.mpl.m.J=a.mpl.m.J*b.mpl.m.R, ans.mpl.m.K=a.mpl.m.K*b.mpl.m.R, ans.type=MN_VECTOR;
|
|
}
|
|
|
|
return(ans);
|
|
@@ -99,19 +99,19 @@
|
|
ans.type=MN_NULL;
|
|
|
|
if (a.type==MN_REAL) {
|
|
- if (b.type==MN_REAL) ans.R=a.R/b.R, ans.type=MN_REAL; // ok
|
|
- else if (b.type==MN_COMPLEX) { opz=mpl_opz(b.Complex()); ans.R=a.R*opz.R, ans.I=a.R*opz.I, ans.type=MN_COMPLEX; }
|
|
- else if (b.type==MN_VECTOR) ans.I=a.R/b.I, ans.J=a.R/b.J, ans.K=a.R/b.K, ans.type=MN_VECTOR;
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R/b.mpl.m.R, ans.type=MN_REAL; // ok
|
|
+ else if (b.type==MN_COMPLEX) { opz=mpl_opz(b.Complex()); ans.mpl.m.R=a.mpl.m.R*opz.mpl.m.R, ans.mpl.m.I=a.mpl.m.R*opz.mpl.m.I, ans.type=MN_COMPLEX; }
|
|
+ else if (b.type==MN_VECTOR) ans.mpl.m.I=a.mpl.m.R/b.mpl.m.I, ans.mpl.m.J=a.mpl.m.R/b.mpl.m.J, ans.mpl.m.K=a.mpl.m.R/b.mpl.m.K, ans.type=MN_VECTOR;
|
|
}
|
|
else
|
|
if (a.type==MN_COMPLEX) {
|
|
- if (b.type==MN_REAL) ans.R=a.R*(1/b.R), ans.I=a.I*(1/b.R), ans.type=MN_COMPLEX;
|
|
- else if (b.type==MN_COMPLEX) { opz=mpl_opz(b.Complex()); ans.R=a.R*opz.R-a.I*opz.I, ans.I=a.R*opz.I+a.I*opz.R, ans.type=MN_COMPLEX; }
|
|
+ if (b.type==MN_REAL) ans.mpl.m.R=a.mpl.m.R*(1/b.mpl.m.R), ans.mpl.m.I=a.mpl.m.I*(1/b.mpl.m.R), ans.type=MN_COMPLEX;
|
|
+ else if (b.type==MN_COMPLEX) { opz=mpl_opz(b.Complex()); ans.mpl.m.R=a.mpl.m.R*opz.mpl.m.R-a.mpl.m.I*opz.mpl.m.I, ans.mpl.m.I=a.mpl.m.R*opz.mpl.m.I+a.mpl.m.I*opz.mpl.m.R, ans.type=MN_COMPLEX; }
|
|
}
|
|
else
|
|
if (a.type==MN_VECTOR) {
|
|
- if (b.type==MN_VECTOR) ans.I=a.I/b.I, ans.J=a.J/b.J, ans.K=a.K/b.K, ans.type=MN_VECTOR;
|
|
- else if (b.type==MN_REAL) ans.I=a.I/b.R, ans.J=a.J/b.R, ans.K=a.K/b.R, ans.type=MN_VECTOR;
|
|
+ if (b.type==MN_VECTOR) ans.mpl.m.I=a.mpl.m.I/b.mpl.m.I, ans.mpl.m.J=a.mpl.m.J/b.mpl.m.J, ans.mpl.m.K=a.mpl.m.K/b.mpl.m.K, ans.type=MN_VECTOR;
|
|
+ else if (b.type==MN_REAL) ans.mpl.m.I=a.mpl.m.I/b.mpl.m.R, ans.mpl.m.J=a.mpl.m.J/b.mpl.m.R, ans.mpl.m.K=a.mpl.m.K/b.mpl.m.R, ans.type=MN_VECTOR;
|
|
}
|
|
|
|
return(ans);
|
|
@@ -135,28 +135,28 @@
|
|
|
|
math_node::math_node(mpl_real r)
|
|
{
|
|
-real=r;
|
|
+mpl.real=r;
|
|
type=MN_REAL;
|
|
}
|
|
|
|
|
|
math_node::math_node(mpl_complex z)
|
|
{
|
|
-complex=z;
|
|
+mpl.complex=z;
|
|
type=MN_COMPLEX;
|
|
}
|
|
|
|
|
|
math_node::math_node(mpl_rational r)
|
|
{
|
|
-rational=r;
|
|
+mpl.rational=r;
|
|
type=MN_RATIONAL;
|
|
}
|
|
|
|
|
|
math_node::math_node(mpl_vector v)
|
|
{
|
|
-vector=v;
|
|
+mpl.vector=v;
|
|
type=MN_VECTOR;
|
|
}
|
|
|
|
@@ -166,7 +166,7 @@
|
|
|
|
void math_node::Clear()
|
|
{
|
|
-R=I=K=J=0.0;
|
|
+mpl.m.R=mpl.m.I=mpl.m.K=mpl.m.J=0.0;
|
|
type=MN_REAL;
|
|
}
|
|
|
|
@@ -180,48 +180,48 @@
|
|
|
|
void math_node::SetReal(mpl_real x)
|
|
{
|
|
-real=x;
|
|
+mpl.real=x;
|
|
type=MN_REAL;
|
|
}
|
|
|
|
|
|
void math_node::SetComplex(mpl_complex z)
|
|
{
|
|
-complex=z;
|
|
+mpl.complex=z;
|
|
type=MN_COMPLEX;
|
|
}
|
|
|
|
|
|
void math_node::SetRational(mpl_rational r)
|
|
{
|
|
-rational=r;
|
|
+mpl.rational=r;
|
|
type=MN_RATIONAL;
|
|
}
|
|
|
|
|
|
mpl_real math_node::Real()
|
|
{
|
|
- if (type==MN_RATIONAL) return(R/I);
|
|
- return(real);
|
|
+ if (type==MN_RATIONAL) return(mpl.m.R/mpl.m.I);
|
|
+ return(mpl.real);
|
|
}
|
|
|
|
|
|
mpl_complex math_node::Complex()
|
|
{
|
|
- if (type==MN_REAL) complex.i=0;
|
|
- return(complex);
|
|
+ if (type==MN_REAL) mpl.complex.i=0;
|
|
+ return(mpl.complex);
|
|
}
|
|
|
|
|
|
mpl_rational math_node::Rational()
|
|
{
|
|
- return(rational);
|
|
+ return(mpl.rational);
|
|
}
|
|
|
|
|
|
mpl_vector math_node::Vector()
|
|
{
|
|
- return(vector);
|
|
+ return(mpl.vector);
|
|
}
|
|
|
|
|