# ============================================================================== # sangi example code # ============================================================================== set(LIB23_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include") # All public sangi static libraries. Every example links the full set; static- # library linking only pulls the object files that resolve referenced symbols, # so over-linking is harmless and keeps the per-example link lines simple. # (sangi_rational transitively pulls sangi_int + sangi_float + sangi_fft.) set(SANGI_PUBLIC_LIBS sangi_rational sangi_matrix) # Helper: create example target function(add_sangi_example EXAMPLE_NAME EXAMPLE_SOURCE) add_executable(${EXAMPLE_NAME} ${EXAMPLE_SOURCE}) target_include_directories(${EXAMPLE_NAME} PRIVATE ${LIB23_INCLUDE_DIR}) target_link_libraries(${EXAMPLE_NAME} PRIVATE ${SANGI_PUBLIC_LIBS} ${ARGN}) set_target_properties(${EXAMPLE_NAME} PROPERTIES FOLDER "Examples") endfunction() # Int add_sangi_example(example-int example_int.cpp sangi_int) add_sangi_example(example-int-demo example_int_demo.cpp sangi_int) # Float add_sangi_example(example-float example_float.cpp sangi_float) add_sangi_example(example-float-demo example_float_demo.cpp sangi_float) # Rational add_sangi_example(example-rational example_rational.cpp sangi_rational) add_sangi_example(example-rational-demo example_rational_demo.cpp sangi_rational) # Multi-precision (Int + Float + Rational) add_sangi_example(example-mp example_mp.cpp sangi_rational) # Vector add_sangi_example(example-vector example_vector.cpp) add_sangi_example(example-vector-demo example_vector_demo.cpp) # Matrix add_sangi_example(example-matrix example_matrix.cpp sangi_rational) add_sangi_example(example-matrix-demo example_matrix_demo.cpp sangi_rational) # LinAlg (uses ThreadPool.hpp -> std::thread -> pthread on Linux) add_sangi_example(example-linalg example_linalg.cpp sangi_rational) # Polynomial add_sangi_example(example-polynomial example_polynomial.cpp) add_sangi_example(example-polynomial-factorization example_polynomial_factorization.cpp) # Roots add_sangi_example(example-roots example_roots.cpp) # Complex add_sangi_example(example-complex example_complex.cpp) # Optimization add_sangi_example(example-optimization example_optimization.cpp) # FFT add_sangi_example(example-fft example_fft.cpp) # RationalFunction (header-only; rational functions, partial fractions) add_sangi_example(example-rationalfunction example_rationalfunction.cpp) # Tensor (multidimensional array) add_sangi_example(example-tensor example_tensor.cpp) # Random (distributions, engines, quasi-random) add_sangi_example(example-random example_random.cpp) # Interpolation (header-only; Lagrange, splines, B-splines, PCHIP) add_sangi_example(example-interpolation example_interpolation.cpp) # Approximation (header-only; regression, Chebyshev, Pade, rational) add_sangi_example(example-approximation example_approximation.cpp) # SpecialFunctions (header-only; gamma, Bessel, zeta, elliptic, ...) add_sangi_example(example-specialfunctions example_specialfunctions.cpp) # Precision Showdown (Matrix + Float + Rational) add_sangi_example(example-precision-showdown example_precision_showdown.cpp sangi_rational) # ============================================================================== # Harness for verifying api/*.html documentation (15 groups) — build & run to # reproduce the verified-output annotations in the docs # ============================================================================== add_sangi_example(example-doc-roots-samples example_doc_roots_samples.cpp) add_sangi_example(example-doc-rationalfunction-samples example_doc_rationalfunction_samples.cpp) add_sangi_example(example-doc-random-samples example_doc_random_samples.cpp) add_sangi_example(example-doc-vector-samples example_doc_vector_samples.cpp) add_sangi_example(example-doc-matrix-samples example_doc_matrix_samples.cpp) add_sangi_example(example-doc-tensor-samples example_doc_tensor_samples.cpp) add_sangi_example(example-doc-complex-samples example_doc_complex_samples.cpp) add_sangi_example(example-doc-concepts-samples example_doc_concepts_samples.cpp sangi_int sangi_rational) add_sangi_example(example-doc-rational-samples example_doc_rational_samples.cpp sangi_int sangi_float sangi_rational) add_sangi_example(example-doc-polynomial-samples example_doc_polynomial_samples.cpp sangi_int sangi_float sangi_rational) add_sangi_example(example-doc-optimization-samples example_doc_optimization_samples.cpp) add_sangi_example(example-doc-fft-samples example_doc_fft_samples.cpp sangi_fft) add_sangi_example(example-doc-float-samples example_doc_float_samples.cpp sangi_int sangi_float) add_sangi_example(example-doc-linalg-samples example_doc_linalg_samples.cpp sangi_int sangi_float sangi_rational) add_sangi_example(example-doc-int-samples example_doc_int_samples.cpp sangi_int)