11 #if defined __cplusplus
16 static double ptwXY_mod2(
double v,
double m,
int pythonMod );
19 int level,
int isNAN1,
int isNAN2 );
33 for( i = 0, p = ptwXY->
points; i < nonOverflowLength; i++, p++ ) p->
y = slope * p->
y +
offset;
68 for( i = 0, p = ptwXY->
points; i < nonOverflowLength; i++, p++ ) p->
y = value / p->
y;
69 for( o = overflowHeader->
next; o != overflowHeader; o = o->
next ) o->
point.
y = value / o->
point.
y;
85 for( i = 0, p = ptwXY->
points; i < nonOverflowLength; i++, p++ ) p->
y =
ptwXY_mod2( p->
y, m, pythonMod );
94 double r = std::fmod( std::fabs( v ), std::fabs( m ) );
97 if( ( v * m ) < 0. ) r = std::fabs( m ) - std::fabs( r );
98 if( m < 0. ) r *= -1.; }
100 if( v < 0. ) r *= -1.;
124 if( ( n =
ptwXY_union( ptwXY1, ptwXY2, status, unionOptions ) ) != NULL ) {
127 p->
y = v1 * p->
y + v2 * y + v1v2 * y * p->
y;
142 if( ptwXY1->
length == 0 ) {
144 else if( ptwXY2->
length == 0 ) {
158 if( ptwXY1->
length == 0 ) {
161 else if( ptwXY2->
length == 0 ) {
175 if( ptwXY1->
length == 0 ) {
177 else if( ptwXY2->
length == 0 ) {
192 double x1,
y1,
x2,
y2, u1, u2,
v1,
v2, xz1 = 0, xz2 = 0,
x;
197 if( ( n =
ptwXY_mul_ptwXY( ptwXY1, ptwXY2, status ) ) == NULL )
return( n );
203 for( i = length - 1; i >= 0; i-- ) {
211 xz1 = ( u1 * x2 - u2 *
x1 ) / ( u1 - u2 );
216 xz2 = ( v1 * x2 - v2 *
x1 ) / ( v1 - v2 );
221 x = 0.5 * ( xz1 + xz2 );
233 for( i = n->
length - 2; i >= 0; i-- ) {
254 double u1, u2,
v1,
v2,
x,
y, yp,
dx, a1, a2;
263 if( ( u1 == u2 ) || ( v1 == v2 ) )
return(
nfu_Okay );
265 if( y1 == 0 ) a1 = 0.;
267 if( y2 == 0 ) a2 = 0.;
268 if( ( a1 == 0. ) || ( a2 == 0. ) ) {
269 x = 0.5 * ( x1 +
x2 ); }
271 if( ( a1 * a2 < 0. ) )
return(
nfu_Okay );
272 a1 = std::sqrt( std::fabs( a1 ) );
273 a2 = std::sqrt( std::fabs( a2 ) );
274 x = ( a2 * x1 + a1 *
x2 ) / ( a2 + a1 );
277 yp = ( u1 * v1 * ( x2 -
x ) + u2 * v2 * ( x - x1 ) ) / dx;
278 y = ( u1 * ( x2 -
x ) + u2 * ( x - x1 ) ) * ( v1 * ( x2 - x ) + v2 * ( x -
x1 ) ) / ( dx *
dx );
279 if( std::fabs( y - yp ) < std::fabs( y * n->
accuracy ) )
return(
nfu_Okay );
291 int64_t i, j,
k, zeros = 0,
length, iYs;
292 double x1,
x2,
y1,
y2, u1, u2,
v1,
v2,
y, xz, nan =
nfu_getNAN( ),
s1, s2;
326 if( i < ( n->
length - 1 ) ) {
339 p->
y = ( y1 +
y2 ) / iYs;
356 for( i =
length - 1; i >= 0; i-- ) {
363 xz = ( u1 * x2 - u2 *
x1 ) / ( u1 - u2 );
372 xz = ( v1 * x2 - v2 *
x1 ) / ( v1 - v2 );
382 for( i = n->
length - 2; i >= 0; i-- ) {
386 if( !isNAN1 || !isNAN2 ) {
413 for( k = i + 1, j = i; k < n->
length; k++ ) {
433 int level,
int isNAN1,
int isNAN2 ) {
436 double u1, u2,
v1,
v2,
v,
x,
y, yp,
dx, a1, a2;
446 x = 0.5 * ( x1 +
x2 );
451 x = 0.5 * ( x1 +
x2 );
456 if( ( u1 == u2 ) || ( v1 ==
v2 ) )
return(
nfu_Okay );
457 if( ( y1 == 0. ) || ( y2 == 0. ) ) {
458 x = 0.5 * ( x1 +
x2 ); }
460 if( ( u1 * u2 < 0. ) )
return(
nfu_Okay );
461 a1 = std::sqrt( std::fabs( u1 ) );
462 a2 = std::sqrt( std::fabs( u2 ) );
463 x = ( a2 * x1 + a1 *
x2 ) / ( a2 + a1 );
466 v = v1 * ( x2 -
x ) + v2 * ( x - x1 );
467 if( ( v1 == 0. ) || ( v2 == 0. ) || ( v == 0. ) )
return(
nfu_Okay );
468 yp = ( u1 / v1 * ( x2 -
x ) + u2 / v2 * ( x - x1 ) ) / dx;
469 y = ( u1 * ( x2 -
x ) + u2 * ( x - x1 ) ) / v;
470 if( std::fabs( y - yp ) < std::fabs( y * n->
accuracy ) )
return(
nfu_Okay );
494 if( ( safeDivide ) && ( p->
y == 0 ) ) {
520 #if defined __cplusplus