solidcore

Units / nurbs

nurbs.nurbs_crv green

Layer
7
Upstream lines
2,200
Functions
27
Rust module
nurbs::nurbs_crv

Source: crates/solidcore/src/nurbs/nurbs_crv.rs

Upstream: source/SMLib/src/SmNurbsCrv.cpp

Notes

27 fns; largest: sm_CrvRemoveKnots, sm_BasisIDerivs, sm_BasisFindGlobalMax, sm_BasisDerivs; unit-SCC #22 (220 units); 317 upstream test entry points reach this unit; GREEN: difftest 4089 cases (1089 fixture from the six upstream .smc curves, SM_API_test rectangle/polygon edges and edge cases + 3000 generated), all bit-identical (max_rel_err 0), 0 deferred; 51,089-case run clean; --perturb SENSITIVE. No UNPORTED(nurbs.nurbs_crv) stubs existed to wire. Upstream quirks (sm_BasisEval flags domain ends, sm_CrvTrim returns NL_INP_ERR) in plan/findings.md

Difftest

Cases
4,089
Passed
4,089
Deferred
0
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Nothing: no deferred cases.

Report JSON (per-case results)

Dependencies

Depends on: geom.axis2_placement green geom.extent3d green geom.tol green nlib.crv_basic green nlib.knots green nlib.math green

Soft dependencies: geom.extent1d green nlib.crv_nurb green nlib.geom green

Dependents: curve.curve_cache green nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green nurbs.b_spline_surface_p1 green

Soft dependents: curve.ellipse_p1 green curve.line green nurbs.b_spline_surface_p2 partial surface.b_spline_volume green

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmStackHandler::SmStackHandlerSmNurbsCrv.cpp:327(none: Rust owns memory)
SmStackHandler::~SmStackHandlerSmNurbsCrv.cpp:456Drop of [Curve]
sm_ExtractFrameSmNurbsCrv.cpp:5914[extract_frame]
sm_GetKnotsSmNurbsCrv.cpp:8251[get_knots]
sm_CopyNurbCurveSmNurbsCrv.cpp:16617[copy_nurb_curve]
sm_ComputeNurbCurveSizeSmNurbsCrv.cpp:20512(none: Rust owns memory)
sm_InitNurbCurveMemorySmNurbsCrv.cpp:23120[allocate_nurb_curve]
sm_AllocateNurbCurveSmNurbsCrv.cpp:30718[allocate_nurb_curve]
sm_AllocateAndCopyNurbCurveSmNurbsCrv.cpp:33330[copy_nurb_curve]
sm_FreeNurbCurveSmNurbsCrv.cpp:3716Drop of [Curve]
sm_FixupKnotVectorSmNurbsCrv.cpp:38686[fixup_knot_vector]
sm_CreateBezSegmentsSmNurbsCrv.cpp:478130[create_bez_segments]
sm_CrvSplitSmNurbsCrv.cpp:614109[crv_split]
sm_CrvTrimSmNurbsCrv.cpp:729120[crv_trim]
sm_CrvGetEPolygonSmNurbsCrv.cpp:99027[crv_get_epolygon]
sm_BasisDerivsSmNurbsCrv.cpp:1023153[basis_derivs], [BasisDerivs]
sm_CrvRationalBasisDerivsSmNurbsCrv.cpp:118273[crv_rational_basis_derivs]
sm_CrvDerivsSmNurbsCrv.cpp:126968[crv_derivs]
sm_BasisEvalSmNurbsCrv.cpp:134375[basis_eval]
sm_CrvEvalSmNurbsCrv.cpp:142451[crv_eval]
sm_CrvRemoveKnotsSmNurbsCrv.cpp:1532382[crv_remove_knots]
sm_BasisFindAllSpanMaximaSmNurbsCrv.cpp:1966130[basis_find_all_span_maxima]
sm_BasisIEvalSmNurbsCrv.cpp:2145139[basis_i_eval]
sm_CrvRemoveKnotMaxErrSmNurbsCrv.cpp:233464[crv_remove_knot_max_err]
sm_BasisIDerivsSmNurbsCrv.cpp:2457219[basis_i_derivs]
sm_BasisFindGlobalMaxSmNurbsCrv.cpp:2727169[basis_find_global_max]
sm_IsNCrvDegenerateSmNurbsCrv.cpp:290324[is_ncrv_degenerate]
Module file-header table (25 rows)
RustUpstream
[extract_frame]sm_ExtractFrame
[get_knots]sm_GetKnots
[copy_nurb_curve]sm_CopyNurbCurve, sm_AllocateAndCopyNurbCurve
[allocate_nurb_curve]sm_AllocateNurbCurve, sm_InitNurbCurveMemory
Drop of [Curve]sm_FreeNurbCurve, SmStackHandler::~SmStackHandler
(none: Rust owns memory)SmStackHandler::SmStackHandler, sm_ComputeNurbCurveSize (both overloads)
[fixup_knot_vector]sm_FixupKnotVector
[create_bez_segments]sm_CreateBezSegments
[crv_split]sm_CrvSplit
[crv_trim]sm_CrvTrim
[crv_get_epolygon]sm_CrvGetEPolygon
[basis_derivs], [BasisDerivs]sm_BasisDerivs
[crv_rational_basis_derivs]sm_CrvRationalBasisDerivs
[crv_derivs]sm_CrvDerivs
[basis_eval]sm_BasisEval
[crv_eval]sm_CrvEval
to_euclid (crate)TO_EUCLID (SmNurbsCrv.h)
[crv_remove_knots]sm_CrvRemoveKnots
[basis_find_all_span_maxima]sm_BasisFindAllSpanMaxima
[basis_i_eval]sm_BasisIEval
[crv_remove_knot_max_err]sm_CrvRemoveKnotMaxErr
[basis_i_derivs]sm_BasisIDerivs
[basis_find_global_max]sm_BasisFindGlobalMax
[is_ncrv_degenerate]sm_IsNCrvDegenerate
[MAX_DEGREE], [MAX_DERIV]GW_MAX_DEGREE, GW_MAX_DERIV

Upstream tests reaching this unit

prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon