Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
ptwXY.h
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# Copyright 2019, Lawrence Livermore National Security, LLC.
4# This file is part of the gidiplus package (https://github.com/LLNL/gidiplus).
5# gidiplus is licensed under the MIT license (see https://opensource.org/licenses/MIT).
6# SPDX-License-Identifier: MIT
7# <<END-copyright>>
8*/
9
10#ifndef ptwXY_h_included
11#define ptwXY_h_included
12
13#include <stdio.h>
14#include <stdint.h>
15
16#include <nf_utilities.h>
17#include <ptwX.h>
18
19#if defined __cplusplus
20 extern "C" {
21#endif
22
23#define ptwXY_minimumSize 10 /* This must be > 0 otherwise some logic will fail. */
24#define ptwXY_minimumOverflowSize 4 /* This must be > 0 otherwise some logic will fail. */
25#define ptwXY_maxBiSectionMax 20
26#define ptwXY_minAccuracy 1e-14
27#define ptwXY_sectionSubdivideMax 1 << 16
28#define ClosestAllowXFactor 10
29
32
33/* The next macro are used in the routine ptwXY_union. */
34#define ptwXY_union_fill 1 /* If filling, union is filled with y value of first ptw. */
35#define ptwXY_union_trim 2 /* If trimming, union in only over common domain of ptw1 and ptw2. */
36#define ptwXY_union_mergeClosePoints 4 /* If true, union calls ptwXY_mergeClosePoints with eps = 4 * DBL_EPSILON. */
39
40/*
41* The function ptwXY_getPointsAroundX determines where an x fits into a ptwXY instance. It returns/sets the following.
42*
43* if ( some point's x == x )
44* lessThanEqualXPoint is set to point's information (prior, next, index, x, y),
45* greaterThanXPoint is set to a overflowHeader,
46* return( ptwXY_lessEqualGreaterX_equal ).
47* else if ( x < first point's x )
48* lessThanEqualXPoint is set to overflowHeader,
49* greaterThanXPoint is set to first point's information,
50* and greaterThanXPoint.prior points to the overflow which will be before the new point when the new point is inserted into overflowPoints.
51* else if ( x > last point's x )
52* lessThanEqualXPoint is set to last point's information
53* greaterThanXPoint is set to a overflowHeader point
54* and lessThanEqualXPoint.prior points to the overflow which will be before new point when the new point is inserted into overflowPoints.
55* else
56* lessThanEqualXPoint is set to point's information for closes point with point's x <= x
57* greaterThanXPoint is set to point's information for closes point with point's x > x
58*/
61
62typedef
63 struct ptwXYPoint_s {
64 double x, y;
66
67typedef nfu_status (*ptwXY_createFromFunction_callback)( statusMessageReporting *smr, double x, double *y, void *argList );
69
70typedef
74 int64_t index; /* For overflowHeader set to -1. */
77
96
97/*
98* Routines in ptwXY_core.c
99*/
100ptwXYPoints *ptwXY_new( statusMessageReporting *smr, ptwXY_interpolation interpolation, char const *interpolationString,
101 double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int userFlag );
102ptwXYPoints *ptwXY_new2( statusMessageReporting *smr, ptwXY_interpolation interpolation, int64_t primarySize, int64_t secondarySize );
104 char const *interpolationString, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize,
105 int userFlag );
106ptwXYPoints *ptwXY_create( statusMessageReporting *smr, ptwXY_interpolation interpolation, char const *interpolationString,
107 double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy,
108 int userFlag );
110 int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy, int userFlag );
112 char const *interpolationString, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize,
113 int64_t length, double const *Xs, double const *Ys, int userFlag );
115 int64_t primarySize, int64_t secondarySize, int64_t length, double const *Xs, double const *Ys, int userFlag );
116
122ptwXYPoints *ptwXY_slice( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t secondarySize );
123ptwXYPoints *ptwXY_domainSlice( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax,
124 int64_t secondarySize, int fill );
125ptwXYPoints *ptwXY_domainMinSlice( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, int64_t secondarySize, int fill );
126ptwXYPoints *ptwXY_domainMaxSlice( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMax, int64_t secondarySize, int fill );
127
129char const *ptwXY_getInterpolationString( ptwXYPoints *ptwXY );
130nfu_status ptwXY_setInterpolationString( ptwXYPoints *ptwXY, char const *interpolationString );
132int ptwXY_getUserFlag( ptwXYPoints *ptwXY );
133void ptwXY_setUserFlag( ptwXYPoints *ptwXY, int userFlag );
134double ptwXY_getAccuracy( ptwXYPoints *ptwXY );
135double ptwXY_setAccuracy( ptwXYPoints *ptwXY, double accuracy );
136double ptwXY_getBiSectionMax( ptwXYPoints *ptwXY );
137double ptwXY_setBiSectionMax( ptwXYPoints *ptwXY, double biSectionMax );
138
139nfu_status ptwXY_reallocatePoints( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t size, int forceSmallerResize );
141nfu_status ptwXY_coalescePoints( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t size, ptwXYPoint *newPoint,
142 int forceSmallerResize );
144
148
149int64_t ptwXY_length( statusMessageReporting *smr, ptwXYPoints *ptwXY );
151
152nfu_status ptwXY_startIndex( statusMessageReporting *a_smr, ptwXYPoints *a_ptwXY, double a_x, int64_t *a_startIndex, int64_t *a_length );
153nfu_status ptwXY_setXYData( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t length, double const *xy );
154nfu_status ptwXY_setXYDataFromXsAndYs( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t length, double const *x, double const *y );
155nfu_status ptwXY_deletePoints( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t i1, int64_t i2 );
156nfu_status ptwXY_getLowerIndexBoundingX( statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, int64_t *index );
158ptwXYPoint *ptwXY_getPointAtIndex_Unsafely( ptwXYPoints const *ptwXY, int64_t index );
159nfu_status ptwXY_getXYPairAtIndex( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index, double *x, double *y );
161 ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint );
163 ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint, double eps, int *closeIsEqual,
164 ptwXYPoint **closePoint );
165nfu_status ptwXY_getValueAtX( statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double *y );
166nfu_status ptwXY_setValueAtX( statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double y );
167nfu_status ptwXY_setValueAtX_overrideIfClose( statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double y, double eps, int override );
168nfu_status ptwXY_mergeFromXsAndYs( statusMessageReporting *smr, ptwXYPoints *ptwXY, int length, double *xs, double *ys );
169nfu_status ptwXY_mergeFromXYs( statusMessageReporting *smr, ptwXYPoints *ptwXY, int length, double *xys );
170nfu_status ptwXY_appendXY( statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double y );
171nfu_status ptwXY_setXYPairAtIndex( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index, double x, double y );
172
173nfu_status ptwXY_getSlopeAtX( statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, char side, double *slope );
174
176nfu_status ptwXY_domainMin( statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value );
178nfu_status ptwXY_domainMax( statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value );
179nfu_status ptwXY_range( statusMessageReporting *smr, ptwXYPoints *ptwXY, double *rangeMin, double *rangeMax );
180nfu_status ptwXY_rangeMin( statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value );
181nfu_status ptwXY_rangeMax( statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value );
182char const *ptwXY_interpolationToString( ptwXY_interpolation interpolation );
183ptwXY_interpolation ptwXY_stringToInterpolation( char const *interpolationString );
184
185/*
186* Methods in ptwXY_methods.c
187*/
188nfu_status ptwXY_clip( statusMessageReporting *smr, ptwXYPoints *ptwXY1, double rangeMin, double rangeMax );
189nfu_status ptwXY_thicken( statusMessageReporting *smr, ptwXYPoints *ptwXY1, int sectionSubdivideMax,
190 double dDomainMax, double fDomainMax );
191ptwXYPoints *ptwXY_thin( statusMessageReporting *smr, ptwXYPoints *ptwXY1, double accuracy );
194
195ptwXYPoints *ptwXY_union( statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int unionOptions );
196
197nfu_status ptwXY_scaleOffsetXAndY( statusMessageReporting *smr, ptwXYPoints *ptwXY, double xScale, double xOffset,
198 double yScale, double yOffset );
200
201/*
202* Functions in ptwXY_unitaryOperators.c
203*/
206
207/*
208* Functions in ptwXY_binaryOperators.c
209*/
210nfu_status ptwXY_slopeOffset( statusMessageReporting *smr, ptwXYPoints *ptwXY, double slope, double offset );
217nfu_status ptwXY_mod( statusMessageReporting *smr, ptwXYPoints *ptwXY, double m, int pythonMod );
218
220 double v1, double v2, double v1v2 );
225ptwXYPoints *ptwXY_div_ptwXY( statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int safeDivide );
226
227/*
228* Functions in ptwXY_functions.c
229*/
234
235/*
236* Functions in ptwXY_interpolation.c
237*/
238nfu_status ptwXY_interpolatePoint( statusMessageReporting *smr, ptwXY_interpolation interpolation, double x, double *y,
239 double x1, double y1, double x2, double y2 );
240ptwXYPoints *ptwXY_flatInterpolationToLinear( statusMessageReporting *smr, ptwXYPoints *ptwXY, double lowerEps, double upperEps );
242 double accuracy );
243ptwXYPoints *ptwXY_unitbaseInterpolate( statusMessageReporting *smr, double w, double w1, ptwXYPoints *ptwXY1,
244 double w2, ptwXYPoints *ptwXY2, int scaleRange );
245ptwXYPoints *ptwXY_toUnitbase( statusMessageReporting *smr, ptwXYPoints *ptwXY, int scaleRange );
246ptwXYPoints *ptwXY_fromUnitbase( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax,
247 int scaleRange );
248
249/*
250* Functions in ptwXY_convenient.c
251*/
254nfu_status ptwXY_mapToXsAndAdd( statusMessageReporting *a_smr, ptwXYPoints *a_ptwXY, int64_t a_offset, int64_t a_length, double const *a_Xs,
255 double *a_results, double a_scaleFractor );
256nfu_status ptwXY_dullEdges( statusMessageReporting *smr, ptwXYPoints *ptwXY, double lowerEps, double upperEps, int positiveXOnly );
261 int epsilonFactor, double epsilon );
262nfu_status ptwXY_mutualifyDomains( statusMessageReporting *smr, ptwXYPoints *ptwXY1, double lowerEps1, double upperEps1,
263 int positiveXOnly1, ptwXYPoints *ptwXY2, double lowerEps2, double upperEps2, int positiveXOnly2 );
264nfu_status ptwXY_copyToC_XY( statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index1, int64_t index2,
265 int64_t allocatedSize, int64_t *numberOfPoints, double *xy );
266nfu_status ptwXY_valuesToC_XsAndYs( statusMessageReporting *smr, ptwXYPoints *ptwXY, double **xs, double **ys );
267ptwXYPoints *ptwXY_valueTo_ptwXY( statusMessageReporting *smr, double x1, double x2, double y );
269ptwXYPoints *ptwXY_createGaussian( statusMessageReporting *smr, double accuracy, double xCenter, double sigma,
270 double amplitude, double domainMin, double domainMax, double dullEps );
271
272/*
273* Functions in ptwXY_misc.c
274*/
275double ptwXY_limitAccuracy( double accuracy );
276void ptwXY_update_biSectionMax( ptwXYPoints *ptwXY1, double oldLength );
278 ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax );
280 void *argList, double accuracy, int checkForRoots, int biSectionMax );
282 void *argList, int checkForRoots );
283ptwXYPoints *ptwXY_fromString( statusMessageReporting *smr, char const *str, char sep, ptwXY_interpolation interpolation, char const *interpolationString,
284 double biSectionMax, double accuracy, char **endCharacter, int useSystem_strtod );
285
286void ptwXY_showInteralStructure( ptwXYPoints *ptwXY, FILE *f, int printPointersAsNull );
287void ptwXY_simpleWrite( ptwXYPoints *ptwXY, FILE *f, char const *format );
288void ptwXY_simplePrint( ptwXYPoints *ptwXY, char const *format );
289
290/*
291* Functions in ptwXY_integration.c
292*/
293nfu_status ptwXY_f_integrate( statusMessageReporting *smr, ptwXY_interpolation interpolation, double x1, double y1,
294 double x2, double y2, double *value );
295nfu_status ptwXY_integrate( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax, double *value );
299nfu_status ptwXY_integrateWithWeight_x( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax,
300 double *value );
302nfu_status ptwXY_integrateWithWeight_sqrt_x( statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax,
303 double *value );
305 ptwXY_group_normType normType, ptwXPoints *ptwX_norm );
307 ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm );
309 ptwXYPoints *ptwXY3, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm );
312 void *argList, double domainMin, double domainMax, int degree, int recursionLimit, double tolerance,
313 double *value );
315
316#if defined __cplusplus
317 }
318#endif
319
320#endif /* End of ptwXY_h_included. */
G4double epsilon(G4double density, G4double temperature)
G4ThreadLocal T * G4GeomSplitter< T >::offset
enum nfu_status_e nfu_status
nfu_status ptwXY_setInterpolationString(ptwXYPoints *ptwXY, char const *interpolationString)
Definition ptwXY_core.c:532
nfu_status ptwXY_div_fromDouble(statusMessageReporting *smr, ptwXYPoints *ptwXY, double value)
nfu_status ptwXY_dullEdges(statusMessageReporting *smr, ptwXYPoints *ptwXY, double lowerEps, double upperEps, int positiveXOnly)
nfu_status ptwXY_scaleAndOffsetDomainWith_ptwXYs(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXYPoints *offset, ptwXYPoints *slope, int skipLastPoint)
nfu_status ptwXY_add_double(statusMessageReporting *smr, ptwXYPoints *ptwXY, double value)
ptwXYPoints * ptwXY_convolution(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int mode)
nfu_status ptwXY_neg(statusMessageReporting *smr, ptwXYPoints *ptwXY)
nfu_status ptwXY_deletePoints(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t i1, int64_t i2)
Definition ptwXY_core.c:943
ptwXYPoints * ptwXY_unitbaseInterpolate(statusMessageReporting *smr, double w, double w1, ptwXYPoints *ptwXY1, double w2, ptwXYPoints *ptwXY2, int scaleRange)
ptwXYPoints * ptwXY_domainSlice(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax, int64_t secondarySize, int fill)
Definition ptwXY_core.c:422
ptwXYPoints * ptwXY_mul_ptwXY(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
nfu_status ptwXY_mergeFromXsAndYs(statusMessageReporting *smr, ptwXYPoints *ptwXY, int length, double *xs, double *ys)
double ptwXY_getAccuracy(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:566
nfu_status ptwXY_trim(statusMessageReporting *smr, ptwXYPoints *ptwXY)
nfu_status ptwXY_setValueAtX(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double y)
ptwXY_interpolation ptwXY_getInterpolation(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:518
double ptwXY_setAccuracy(ptwXYPoints *ptwXY, double accuracy)
Definition ptwXY_core.c:573
nfu_status ptwXY_initialize(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, char const *interpolationString, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int userFlag)
Definition ptwXY_core.c:53
nfu_status ptwXY_valuesToC_XsAndYs(statusMessageReporting *smr, ptwXYPoints *ptwXY, double **xs, double **ys)
nfu_status ptwXY_rangeMax(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
ptwXYPoints * ptwXY_clone2(statusMessageReporting *smr, ptwXYPoints const *ptwXY)
Definition ptwXY_core.c:312
double ptwXY_limitAccuracy(double accuracy)
Definition ptwXY_misc.c:28
ptwXPoints * ptwXY_equalProbableBins(statusMessageReporting *smr, ptwXYPoints *ptwXY, int numberOfBins)
int ptwXY_getUserFlag(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:552
nfu_status ptwXY_startIndex(statusMessageReporting *a_smr, ptwXYPoints *a_ptwXY, double a_x, int64_t *a_startIndex, int64_t *a_length)
Definition ptwXY_core.c:818
enum ptwXY_group_normType_e ptwXY_group_normType
char const * ptwXY_interpolationToString(ptwXY_interpolation interpolation)
nfu_status ptwXY_release(statusMessageReporting *smr, ptwXYPoints *ptwXY)
Definition ptwXY_core.c:759
nfu_status ptwXY_integrateDomainWithWeight_sqrt_x(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
enum ptwXY_lessEqualGreaterX_e ptwXY_lessEqualGreaterX
nfu_status ptwXY_exp(statusMessageReporting *smr, ptwXYPoints *ptwXY, double a)
nfu_status ptwXY_integrateWithFunction(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXY_createFromFunction_callback func, void *argList, double domainMin, double domainMax, int degree, int recursionLimit, double tolerance, double *value)
void ptwXY_showInteralStructure(ptwXYPoints *ptwXY, FILE *f, int printPointersAsNull)
Definition ptwXY_misc.c:297
nfu_status ptwXY_scaleOffsetXAndY(statusMessageReporting *smr, ptwXYPoints *ptwXY, double xScale, double xOffset, double yScale, double yOffset)
enum ptwXY_dataFrom_e ptwXY_dataFrom
ptwXPoints * ptwXY_runningIntegral(statusMessageReporting *smr, ptwXYPoints *ptwXY)
nfu_status ptwXY_normalize(statusMessageReporting *smr, ptwXYPoints *ptwXY1)
nfu_status ptwXY_sub_doubleFrom(statusMessageReporting *smr, ptwXYPoints *ptwXY, double value)
nfu_status ptwXY_domainMinAndFrom(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom, double *value)
ptwXYPoints * ptwXY_createFromFunction(statusMessageReporting *smr, int n, double *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax)
Definition ptwXY_misc.c:46
nfu_status ptwXY_integrateDomainWithWeight_x(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
nfu_status ptwXY_clip(statusMessageReporting *smr, ptwXYPoints *ptwXY1, double rangeMin, double rangeMax)
nfu_status(* ptwXY_createFromFunction_callback)(statusMessageReporting *smr, double x, double *y, void *argList)
Definition ptwXY.h:67
ptwXYPoints * ptwXY_createGaussianCenteredSigma1(statusMessageReporting *smr, double accuracy)
int64_t ptwXY_getNonOverflowLength(statusMessageReporting *smr, ptwXYPoints const *ptwXY)
Definition ptwXY_core.c:805
ptwXYPoints * ptwXY_clone(statusMessageReporting *smr, ptwXYPoints *ptwXY)
Definition ptwXY_core.c:302
ptwXY_group_normType_e
Definition ptwXY.h:31
@ ptwXY_group_normType_dx
Definition ptwXY.h:31
@ ptwXY_group_normType_none
Definition ptwXY.h:31
@ ptwXY_group_normType_norm
Definition ptwXY.h:31
nfu_status ptwXY_div_doubleFrom(statusMessageReporting *smr, ptwXYPoints *ptwXY, double value)
ptwXYPoints * ptwXY_intersectionWith_ptwX(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXPoints *ptwX)
nfu_status ptwXY_tweakDomainsToMutualify(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int epsilonFactor, double epsilon)
void ptwXY_setUserFlag(ptwXYPoints *ptwXY, int userFlag)
Definition ptwXY_core.c:559
nfu_status ptwXY_coalescePoints(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t size, ptwXYPoint *newPoint, int forceSmallerResize)
Definition ptwXY_core.c:667
ptwXYPoints * ptwXY_add_ptwXY(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
nfu_status ptwXY_getLowerIndexBoundingX(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, int64_t *index)
Definition ptwXY_core.c:967
ptwXYPoints * ptwXY_thinDomain(statusMessageReporting *smr, ptwXYPoints *ptwXY1, double epsilon)
ptwXYPoints * ptwXY_createFrom_Xs_Ys2(statusMessageReporting *smr, ptwXY_interpolation interpolation, int64_t primarySize, int64_t secondarySize, int64_t length, double const *Xs, double const *Ys, int userFlag)
Definition ptwXY_core.c:161
ptwXYPoints * ptwXY_binary_ptwXY(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, double v1, double v2, double v1v2)
nfu_status ptwXY_range(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *rangeMin, double *rangeMax)
nfu_status ptwXY_abs(statusMessageReporting *smr, ptwXYPoints *ptwXY)
struct ptwXYOverflowPoint_s ptwXYOverflowPoint
ptwXPoints * ptwXY_getXArray(statusMessageReporting *smr, ptwXYPoints *ptwXY)
nfu_status ptwXY_pow(statusMessageReporting *smr, ptwXYPoints *ptwXY, double p)
void ptwXY_simplePrint(ptwXYPoints *ptwXY, char const *format)
Definition ptwXY_misc.c:342
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint)
nfu_status ptwXY_reallocateOverflowPoints(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t size)
Definition ptwXY_core.c:634
nfu_status ptwXY_slopeOffset(statusMessageReporting *smr, ptwXYPoints *ptwXY, double slope, double offset)
ptwXYPoints * ptwXY_new2(statusMessageReporting *smr, ptwXY_interpolation interpolation, int64_t primarySize, int64_t secondarySize)
Definition ptwXY_core.c:44
ptwXPoints * ptwXY_groupTwoFunctions(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm)
nfu_status ptwXY_integrate(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax, double *value)
nfu_status(* ptwXY_applyFunction_callback)(statusMessageReporting *smr, ptwXYPoint *point, void *argList)
Definition ptwXY.h:68
nfu_status ptwXY_rangeMin(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
ptwXYPoints * ptwXY_cloneToInterpolation(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXY_interpolation interpolationTo)
Definition ptwXY_core.c:349
ptwXYPoints * ptwXY_thin(statusMessageReporting *smr, ptwXYPoints *ptwXY1, double accuracy)
nfu_status ptwXY_mul_double(statusMessageReporting *smr, ptwXYPoints *ptwXY, double value)
ptwXY_lessEqualGreaterX ptwXY_getPointsAroundX_closeIsEqual(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, ptwXYOverflowPoint *lessThanEqualXPoint, ptwXYOverflowPoint *greaterThanXPoint, double eps, int *closeIsEqual, ptwXYPoint **closePoint)
enum ptwXY_interpolation_e ptwXY_interpolation
ptwXYPoints * ptwXY_sub_ptwXY(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
nfu_status ptwXY_areDomainsMutual(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
nfu_status ptwXY_mergeFromXYs(statusMessageReporting *smr, ptwXYPoints *ptwXY, int length, double *xys)
nfu_status ptwXY_thicken(statusMessageReporting *smr, ptwXYPoints *ptwXY1, int sectionSubdivideMax, double dDomainMax, double fDomainMax)
char const * ptwXY_getInterpolationString(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:525
ptwXYPoints * ptwXY_div_ptwXY(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int safeDivide)
ptwXY_interpolation_e
Definition ptwXY.h:37
@ ptwXY_interpolationFlat
Definition ptwXY.h:38
@ ptwXY_interpolationLinLog
Definition ptwXY.h:37
@ ptwXY_interpolationLogLog
Definition ptwXY.h:38
@ ptwXY_interpolationLinLin
Definition ptwXY.h:37
@ ptwXY_interpolationOther
Definition ptwXY.h:38
@ ptwXY_interpolationLogLin
Definition ptwXY.h:37
ptwXYPoints * ptwXY_mul2_ptwXY(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2)
nfu_status ptwXY_setXYPairAtIndex(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index, double x, double y)
ptwXYPoints * ptwXY_createFromFunction2(statusMessageReporting *smr, ptwXPoints *xs, ptwXY_createFromFunction_callback func, void *argList, double accuracy, int checkForRoots, int biSectionMax)
Definition ptwXY_misc.c:104
struct ptwXYPoints_s ptwXYPoints
nfu_status ptwXY_mutualifyDomains(statusMessageReporting *smr, ptwXYPoints *ptwXY1, double lowerEps1, double upperEps1, int positiveXOnly1, ptwXYPoints *ptwXY2, double lowerEps2, double upperEps2, int positiveXOnly2)
ptwXYPoints * ptwXY_domainMinSlice(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, int64_t secondarySize, int fill)
Definition ptwXY_core.c:482
nfu_status ptwXY_getXYPairAtIndex(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index, double *x, double *y)
ptwXYPoints * ptwXY_createFrom_Xs_Ys(statusMessageReporting *smr, ptwXY_interpolation interpolation, char const *interpolationString, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *Xs, double const *Ys, int userFlag)
Definition ptwXY_core.c:138
ptwXYPoints * ptwXY_domainMaxSlice(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMax, int64_t secondarySize, int fill)
Definition ptwXY_core.c:499
nfu_status ptwXY_integrateWithWeight_sqrt_x(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax, double *value)
nfu_status ptwXY_clear(statusMessageReporting *smr, ptwXYPoints *ptwXY)
Definition ptwXY_core.c:743
nfu_status ptwXY_copyToC_XY(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t allocatedSize, int64_t *numberOfPoints, double *xy)
nfu_status ptwXY_mapToXsAndAdd(statusMessageReporting *a_smr, ptwXYPoints *a_ptwXY, int64_t a_offset, int64_t a_length, double const *a_Xs, double *a_results, double a_scaleFractor)
double ptwXY_getBiSectionMax(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:582
nfu_status ptwXY_interpolatePoint(statusMessageReporting *smr, ptwXY_interpolation interpolation, double x, double *y, double x1, double y1, double x2, double y2)
ptwXY_lessEqualGreaterX_e
Definition ptwXY.h:59
@ ptwXY_lessEqualGreaterX_equal
Definition ptwXY.h:59
@ ptwXY_lessEqualGreaterX_Error
Definition ptwXY.h:60
@ ptwXY_lessEqualGreaterX_empty
Definition ptwXY.h:59
@ ptwXY_lessEqualGreaterX_between
Definition ptwXY.h:60
@ ptwXY_lessEqualGreaterX_lessThan
Definition ptwXY.h:59
@ ptwXY_lessEqualGreaterX_greater
Definition ptwXY.h:60
nfu_status ptwXY_getStatus(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:545
ptwXYPoints * ptwXY_new(statusMessageReporting *smr, ptwXY_interpolation interpolation, char const *interpolationString, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int userFlag)
Definition ptwXY_core.c:28
void ptwXY_simpleWrite(ptwXYPoints *ptwXY, FILE *f, char const *format)
Definition ptwXY_misc.c:329
nfu_status ptwXY_appendXY(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double y)
void ptwXY_update_biSectionMax(ptwXYPoints *ptwXY1, double oldLength)
Definition ptwXY_misc.c:37
ptwXYPoints * ptwXY_create2(statusMessageReporting *smr, ptwXY_interpolation interpolation, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy, int userFlag)
Definition ptwXY_core.c:128
nfu_status ptwXY_mod(statusMessageReporting *smr, ptwXYPoints *ptwXY, double m, int pythonMod)
int64_t ptwXY_length(statusMessageReporting *smr, ptwXYPoints *ptwXY)
Definition ptwXY_core.c:793
nfu_status ptwXY_copy(statusMessageReporting *smr, ptwXYPoints *dest, ptwXYPoints *src)
Definition ptwXY_core.c:171
nfu_status ptwXY_domainMaxAndFrom(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXY_dataFrom *dataFrom, double *value)
nfu_status ptwXY_reallocatePoints(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t size, int forceSmallerResize)
Definition ptwXY_core.c:602
nfu_status ptwXY_applyFunction(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXY_applyFunction_callback func, void *argList, int checkForRoots)
Definition ptwXY_misc.c:165
ptwXYPoints * ptwXY_union(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, int unionOptions)
struct ptwXYPoint_s ptwXYPoint
nfu_status ptwXY_f_integrate(statusMessageReporting *smr, ptwXY_interpolation interpolation, double x1, double y1, double x2, double y2, double *value)
nfu_status ptwXY_mergeClosePoints(statusMessageReporting *smr, ptwXYPoints *ptwXY, double epsilon)
ptwXYPoints * ptwXY_fromString(statusMessageReporting *smr, char const *str, char sep, ptwXY_interpolation interpolation, char const *interpolationString, double biSectionMax, double accuracy, char **endCharacter, int useSystem_strtod)
Definition ptwXY_misc.c:275
ptwXYPoints * ptwXY_valueTo_ptwXY(statusMessageReporting *smr, double x1, double x2, double y)
ptwXY_interpolation ptwXY_stringToInterpolation(char const *interpolationString)
nfu_status ptwXY_setXYData(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t length, double const *xy)
Definition ptwXY_core.c:866
ptwXYPoints * ptwXY_free(ptwXYPoints *ptwXY)
Definition ptwXY_core.c:782
ptwXYPoints * ptwXY_slice(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index1, int64_t index2, int64_t secondarySize)
Definition ptwXY_core.c:388
nfu_status ptwXY_getSlopeAtX(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, char side, double *slope)
ptwXYPoint * ptwXY_getPointAtIndex_Unsafely(ptwXYPoints const *ptwXY, int64_t index)
ptwXPoints * ptwXY_groupThreeFunctions(statusMessageReporting *smr, ptwXYPoints *ptwXY1, ptwXYPoints *ptwXY2, ptwXYPoints *ptwXY3, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm)
nfu_status ptwXY_sub_fromDouble(statusMessageReporting *smr, ptwXYPoints *ptwXY, double value)
ptwXYPoints * ptwXY_create(statusMessageReporting *smr, ptwXY_interpolation interpolation, char const *interpolationString, double biSectionMax, double accuracy, int64_t primarySize, int64_t secondarySize, int64_t length, double const *xy, int userFlag)
Definition ptwXY_core.c:110
ptwXPoints * ptwXY_groupOneFunction(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXPoints *groupBoundaries, ptwXY_group_normType normType, ptwXPoints *ptwX_norm)
ptwXYPoints * ptwXY_toOtherInterpolation(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXY_interpolation interpolation, double accuracy)
ptwXY_dataFrom_e
Definition ptwXY.h:30
@ ptwXY_dataFrom_Overflow
Definition ptwXY.h:30
@ ptwXY_dataFrom_Points
Definition ptwXY.h:30
@ ptwXY_dataFrom_Unknown
Definition ptwXY.h:30
nfu_status ptwXY_domainMax(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
ptwXYPoint * ptwXY_getPointAtIndex(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t index)
Definition ptwXY_core.c:994
ptwXYPoints * ptwXY_toUnitbase(statusMessageReporting *smr, ptwXYPoints *ptwXY, int scaleRange)
double ptwXY_setBiSectionMax(ptwXYPoints *ptwXY, double biSectionMax)
Definition ptwXY_core.c:589
nfu_status ptwXY_getValueAtX(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double *y)
nfu_status ptwXY_simpleCoalescePoints(statusMessageReporting *smr, ptwXYPoints *ptwXY)
Definition ptwXY_core.c:734
nfu_status ptwXY_setValueAtX_overrideIfClose(statusMessageReporting *smr, ptwXYPoints *ptwXY, double x, double y, double eps, int override)
ptwXYPoints * ptwXY_createGaussian(statusMessageReporting *smr, double accuracy, double xCenter, double sigma, double amplitude, double domainMin, double domainMax, double dullEps)
nfu_status ptwXY_integrateDomain(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
nfu_status ptwXY_domainMin(statusMessageReporting *smr, ptwXYPoints *ptwXY, double *value)
nfu_status ptwXY_integrateWithWeight_x(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax, double *value)
ptwXYPoints * ptwXY_fromUnitbase(statusMessageReporting *smr, ptwXYPoints *ptwXY, double domainMin, double domainMax, int scaleRange)
ptwXPoints * ptwXY_ysMappedToXs(statusMessageReporting *smr, ptwXYPoints *ptwXY, ptwXPoints *Xs, int64_t *offset)
nfu_status ptwXY_copyPointsOnly(statusMessageReporting *smr, ptwXYPoints *dest, ptwXYPoints *src)
Definition ptwXY_core.c:247
ptwXYPoints * ptwXY_inverse(statusMessageReporting *smr, ptwXYPoints *ptwXY)
ptwXYPoints * ptwXY_flatInterpolationToLinear(statusMessageReporting *smr, ptwXYPoints *ptwXY, double lowerEps, double upperEps)
nfu_status ptwXY_setXYDataFromXsAndYs(statusMessageReporting *smr, ptwXYPoints *ptwXY, int64_t length, double const *x, double const *y)
Definition ptwXY_core.c:907
struct ptwXPoints_s ptwXPoints
struct ptwXYOverflowPoint_s * next
Definition ptwXY.h:73
struct ptwXYOverflowPoint_s * prior
Definition ptwXY.h:72
ptwXYPoint point
Definition ptwXY.h:75
double y
Definition ptwXY.h:64
double x
Definition ptwXY.h:64
double minFractional_dx
Definition ptwXY.h:86
ptwXYOverflowPoint overflowHeader
Definition ptwXY.h:92
int userFlag
Definition ptwXY.h:83
ptwXYPoint * points
Definition ptwXY.h:93
ptwXY_interpolation interpolation
Definition ptwXY.h:81
double biSectionMax
Definition ptwXY.h:84
double accuracy
Definition ptwXY.h:85
int64_t length
Definition ptwXY.h:87
int64_t overflowLength
Definition ptwXY.h:89
int64_t overflowAllocatedSize
Definition ptwXY.h:90
nfu_status status
Definition ptwXY.h:80
ptwXYOverflowPoint * overflowPoints
Definition ptwXY.h:94
int64_t mallocFailedSize
Definition ptwXY.h:91
int64_t allocatedSize
Definition ptwXY.h:88
char const * interpolationString
Definition ptwXY.h:82