├── .github └── workflows │ ├── continuous.yml │ ├── doxygen.yml │ ├── draft-pdf.yml │ ├── emscripten.yml │ ├── make_release.yml │ └── nightly.yml ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── LICENSE ├── README.md ├── cmake ├── FindGeogram.cmake ├── cmake_uninstall.cmake.in ├── doxygen.cmake ├── geo_detect_platform.cmake ├── geogram.cmake ├── onetbb.cmake ├── opengl.cmake ├── options │ ├── CMakeOptions.txt.Gargantua │ ├── CMakeOptions.txt.Minimal │ ├── CMakeOptions.txt.Standard │ ├── CMakeOptions.txt.graphite │ └── CMakeOptions.txt.sample ├── platforms │ ├── Android-generic │ │ └── config.cmake │ ├── Darwin-aarch64-clang-dynamic │ │ └── config.cmake │ ├── Darwin-aarch64-clang │ │ └── config.cmake │ ├── Darwin-clang-dynamic │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Darwin-clang.cmake │ ├── Darwin-clang │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Darwin.cmake │ ├── Emscripten-clang.cmake │ ├── Emscripten-clang │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux-clang.cmake │ ├── Linux-gcc-aarch64.cmake │ ├── Linux-gcc.cmake │ ├── Linux-icc.cmake │ ├── Linux-mic-icc.cmake │ ├── Linux.cmake │ ├── Linux32-gcc-Raspberry │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux32-gcc │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-clang-dynamic │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-clang │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-gcc-aarch64 │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-gcc-dynamic │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-gcc │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-icc-dynamic │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-icc │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-mic-icc │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-nonx86-clang-dynamic │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Linux64-nonx86-gcc-dynamic │ │ ├── config.cmake │ │ └── setvars.sh │ ├── MinGW-x86_64-w64.cmake │ ├── MinGW-x86_64-w64 │ │ ├── config.cmake │ │ └── setvars.sh │ ├── Win-vs-dynamic-generic │ │ └── config.cmake │ ├── Win-vs-generic │ │ └── config.cmake │ ├── Windows-vs.cmake │ └── Windows.cmake └── utilities.cmake ├── configure.bat ├── configure.sh ├── doc ├── CMakeLists.txt ├── VERSION.txt.in ├── common.dox ├── devkit-full.dox.in ├── devkit-internal-light.dox.in ├── devkit-internal.dox.in ├── devkit.dox.in └── devkit │ ├── PSM.dox │ ├── design.dox │ ├── license.dox │ ├── mainpage.dox │ └── programmer.dox ├── joss ├── geogram.bib └── paper.md ├── src ├── bin │ ├── CMakeLists.txt │ ├── fpg │ │ ├── AST.cpp │ │ ├── ASTdump.cpp │ │ ├── ASTtype.cpp │ │ ├── Abstract_interpretation_visitor.cpp │ │ ├── CGALmini │ │ │ ├── FPU.h │ │ │ ├── README.txt │ │ │ ├── Static_filter_error.h │ │ │ ├── basic.h │ │ │ └── lgpl-3.0.txt │ │ ├── CMakeLists.txt │ │ ├── Declarator.cpp │ │ ├── Error_bound_value.cpp │ │ ├── FPG │ │ │ ├── AST.h │ │ │ ├── Abstract_interpretation_visitor.h │ │ │ ├── Abstract_value.h │ │ │ ├── Attribute_visitor.h │ │ │ ├── Collect_function_calls.h │ │ │ ├── Declarator.h │ │ │ ├── Error.h │ │ │ ├── Error_bound_value.h │ │ │ ├── Generic_visitor.h │ │ │ ├── Group_algebra.h │ │ │ ├── Group_index_value.h │ │ │ ├── Location.h │ │ │ ├── MSG.h │ │ │ ├── Misc_visitors.h │ │ │ ├── Prettyprint_visitor.h │ │ │ ├── Simple_semistatic_filter.h │ │ │ ├── Static_filter_error.h │ │ │ ├── Static_filter_with_scaling.h │ │ │ ├── Symbol.h │ │ │ ├── SymbolEnvironment.h │ │ │ ├── Transformation.h │ │ │ ├── Value.h │ │ │ ├── Visitor.h │ │ │ ├── io.h │ │ │ └── test.h │ │ ├── Generic_visitor.cpp │ │ ├── Group_algebra.cpp │ │ ├── Group_index_value.cpp │ │ ├── Location.cpp │ │ ├── Misc_visitors.cpp │ │ ├── Prettyprint_visitor.cpp │ │ ├── Simple_semistatic_filter.cpp │ │ ├── Static_filter_with_scaling.cpp │ │ ├── Symbol.cpp │ │ ├── SymbolEnvironment.cpp │ │ ├── Transformation.cpp │ │ ├── Unused │ │ │ ├── Collect_function_calls.cpp │ │ │ ├── Visitor_skeleton.cpp │ │ │ └── test.cpp │ │ ├── genparser.sh │ │ ├── io.cpp │ │ ├── lex.l │ │ ├── lex.yy.cpp │ │ ├── mcc.cpp │ │ ├── parse.tab.cpp │ │ ├── parse.tab.h │ │ └── parse.y │ ├── geoCSG │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── geobox │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── geocod │ │ ├── CMakeLists.txt │ │ ├── html │ │ │ └── index.html │ │ ├── lua │ │ │ ├── book │ │ │ │ ├── S01E01.lua │ │ │ │ └── S01E02.lua │ │ │ ├── embed_lua_files.sh │ │ │ ├── embedded_lua_files.cpp │ │ │ ├── examples │ │ │ │ ├── arbre.lua │ │ │ │ ├── creeper.lua │ │ │ │ ├── flake.lua │ │ │ │ ├── maison.lua │ │ │ │ ├── plotter.lua │ │ │ │ ├── sierpinski.lua │ │ │ │ └── sponge.lua │ │ │ ├── games │ │ │ │ ├── asteroids.lua │ │ │ │ ├── hackman.lua │ │ │ │ ├── invaders.lua │ │ │ │ └── labyrinthe.lua │ │ │ ├── lib │ │ │ │ ├── pixel.lua │ │ │ │ ├── preamble.lua │ │ │ │ └── turtle.lua │ │ │ └── templates │ │ │ │ ├── pixel_program.lua │ │ │ │ └── turtle_program.lua │ │ └── main.cpp │ ├── geodump │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── geoshade │ │ ├── CMakeLists.txt │ │ ├── glsl │ │ │ ├── ShaderToy │ │ │ │ ├── AlloyPlatedVoronoi.glsl │ │ │ │ ├── AndromedaJewel.glsl │ │ │ │ ├── Circuits.glsl │ │ │ │ ├── ContouredLayers.glsl │ │ │ │ ├── FractalLand.glsl │ │ │ │ ├── GeodesicTiling.glsl │ │ │ │ ├── Geomechanical.glsl │ │ │ │ ├── HappyJumping.glsl │ │ │ │ ├── HexFlow.glsl │ │ │ │ ├── JellyTubes.glsl │ │ │ │ ├── MengerTunnel.glsl │ │ │ │ ├── QuadTreeTruchet.glsl │ │ │ │ ├── RayMarchingPrimitives.glsl │ │ │ │ ├── RoundedVoronoiEdges.glsl │ │ │ │ ├── RounderVoronoi.glsl │ │ │ │ ├── SiggraphLogo.glsl │ │ │ │ ├── TentacleObject.glsl │ │ │ │ ├── ThePopularShader.glsl │ │ │ │ ├── TracedMinkwskiTube.glsl │ │ │ │ ├── VoxelPacMan.glsl │ │ │ │ ├── Voxels.glsl │ │ │ │ └── rabbit.glsl │ │ │ ├── course │ │ │ │ ├── raytrace_step1.glsl │ │ │ │ ├── raytrace_step2.glsl │ │ │ │ ├── raytrace_step3.glsl │ │ │ │ ├── raytrace_step4.glsl │ │ │ │ ├── raytrace_step5.glsl │ │ │ │ ├── raytrace_step6.glsl │ │ │ │ ├── raytrace_step7.glsl │ │ │ │ └── raytrace_step8.glsl │ │ │ ├── embed_glsl_files.sh │ │ │ └── embedded_glsl_files.cpp │ │ └── main.cpp │ ├── pck │ │ ├── CMakeLists.txt │ │ ├── expr.cpp │ │ ├── expr.h │ │ ├── interpreter.cpp │ │ ├── interpreter.h │ │ └── main.cpp │ ├── vorpacomp │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── vorpalite │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── vorpastat │ │ ├── CMakeLists.txt │ │ └── main.cpp │ └── vorpaview │ │ ├── CMakeLists.txt │ │ └── main.cpp ├── examples │ ├── CMakeLists.txt │ ├── contrib │ │ └── topopt │ │ │ ├── CMakeLists.txt │ │ │ ├── README.txt │ │ │ ├── element.h │ │ │ ├── layout.h │ │ │ ├── main.cpp │ │ │ ├── mesh_primitives.cpp │ │ │ ├── mesh_primitives.h │ │ │ ├── topopt.cpp │ │ │ └── topopt.h │ ├── exploragram │ │ ├── CMakeLists.txt │ │ ├── compute_OTM │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ └── hexdom_pipeline │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ ├── geogram │ │ ├── CMakeLists.txt │ │ ├── boolean_operations │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── compute_CSG │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── compute_RVD │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── compute_delaunay │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── intersect │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── manifold_harmonics │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── opennl_LSCM │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── opennl_basic_example │ │ │ ├── CMakeLists.txt │ │ │ └── main.c │ │ ├── opennl_mesh_smooth │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ └── simple_raytrace │ │ │ ├── CMakeLists.txt │ │ │ ├── main.cpp │ │ │ └── raytracing.h │ └── graphics │ │ ├── CMakeLists.txt │ │ ├── demo_Application │ │ ├── CMakeLists.txt │ │ └── main.cpp │ │ ├── demo_Delaunay2d │ │ ├── CMakeLists.txt │ │ ├── gui_state.h │ │ └── main.cpp │ │ ├── demo_Delaunay3d │ │ ├── CMakeLists.txt │ │ └── main.cpp │ │ ├── demo_Evert │ │ ├── CMakeLists.txt │ │ ├── generateGeometry.cpp │ │ ├── generateGeometry.h │ │ ├── main.cpp │ │ └── uv.xpm │ │ ├── demo_GLUP │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ └── uv.xpm │ │ ├── demo_Picking │ │ ├── CMakeLists.txt │ │ └── main.cpp │ │ ├── demo_Raytrace │ │ ├── CMakeLists.txt │ │ └── main.cpp │ │ └── demo_SimpleApplication │ │ ├── CMakeLists.txt │ │ └── main.cpp ├── lib │ ├── geogram │ │ ├── CMakeLists.txt │ │ ├── NL │ │ │ ├── OpenNL.psm │ │ │ ├── nl.h │ │ │ ├── nl_64.h │ │ │ ├── nl_amgcl.cpp │ │ │ ├── nl_amgcl.h │ │ │ ├── nl_api.c │ │ │ ├── nl_arpack.c │ │ │ ├── nl_arpack.h │ │ │ ├── nl_blas.c │ │ │ ├── nl_blas.h │ │ │ ├── nl_cholmod.c │ │ │ ├── nl_cholmod.h │ │ │ ├── nl_context.c │ │ │ ├── nl_context.h │ │ │ ├── nl_cuda.c │ │ │ ├── nl_cuda.h │ │ │ ├── nl_ext.h │ │ │ ├── nl_iterative_solvers.c │ │ │ ├── nl_iterative_solvers.h │ │ │ ├── nl_linkage.h │ │ │ ├── nl_matrix.c │ │ │ ├── nl_matrix.h │ │ │ ├── nl_mkl.c │ │ │ ├── nl_mkl.h │ │ │ ├── nl_os.c │ │ │ ├── nl_preconditioners.c │ │ │ ├── nl_preconditioners.h │ │ │ ├── nl_private.h │ │ │ ├── nl_superlu.c │ │ │ └── nl_superlu.h │ │ ├── api │ │ │ └── defs.h │ │ ├── basic │ │ │ ├── algorithm.cpp │ │ │ ├── algorithm.h │ │ │ ├── android_utils.cpp │ │ │ ├── android_utils.h │ │ │ ├── android_wrapper.h │ │ │ ├── argused.h │ │ │ ├── assert.cpp │ │ │ ├── assert.h │ │ │ ├── attributes.cpp │ │ │ ├── attributes.h │ │ │ ├── b_stream.cpp │ │ │ ├── b_stream.h │ │ │ ├── boolean_expression.cpp │ │ │ ├── boolean_expression.h │ │ │ ├── command_line.cpp │ │ │ ├── command_line.h │ │ │ ├── command_line_args.cpp │ │ │ ├── command_line_args.h │ │ │ ├── common.cpp │ │ │ ├── common.h │ │ │ ├── counted.cpp │ │ │ ├── counted.h │ │ │ ├── debug_stream.cpp │ │ │ ├── debug_stream.h │ │ │ ├── determinant.h │ │ │ ├── environment.cpp │ │ │ ├── environment.h │ │ │ ├── factory.cpp │ │ │ ├── factory.h │ │ │ ├── file_system.cpp │ │ │ ├── file_system.h │ │ │ ├── geofile.cpp │ │ │ ├── geofile.h │ │ │ ├── geometry.cpp │ │ │ ├── geometry.h │ │ │ ├── geometry_nd.h │ │ │ ├── line_stream.cpp │ │ │ ├── line_stream.h │ │ │ ├── logger.cpp │ │ │ ├── logger.h │ │ │ ├── matrix.h │ │ │ ├── memory.h │ │ │ ├── numeric.cpp │ │ │ ├── numeric.h │ │ │ ├── packed_arrays.cpp │ │ │ ├── packed_arrays.h │ │ │ ├── permutation.h │ │ │ ├── process.cpp │ │ │ ├── process.h │ │ │ ├── process_private.h │ │ │ ├── process_unix.cpp │ │ │ ├── process_win.cpp │ │ │ ├── progress.cpp │ │ │ ├── progress.h │ │ │ ├── psm.h │ │ │ ├── quaternion.cpp │ │ │ ├── quaternion.h │ │ │ ├── range.h │ │ │ ├── rationalg.h │ │ │ ├── smart_pointer.h │ │ │ ├── stopwatch.cpp │ │ │ ├── stopwatch.h │ │ │ ├── string.cpp │ │ │ ├── string.h │ │ │ ├── thread_sync.h │ │ │ ├── vecg.h │ │ │ ├── vechg.h │ │ │ ├── vector_attribute.h │ │ │ └── version.h.in │ │ ├── bibliography │ │ │ ├── bibliography.cpp │ │ │ ├── bibliography.h │ │ │ ├── embed_bib_files.sh │ │ │ ├── embedded_references.cpp │ │ │ └── geogram.bib │ │ ├── delaunay │ │ │ ├── CDT_2d.cpp │ │ │ ├── CDT_2d.h │ │ │ ├── Delaunay.psm │ │ │ ├── LFS.cpp │ │ │ ├── LFS.h │ │ │ ├── cavity.h │ │ │ ├── delaunay.cpp │ │ │ ├── delaunay.h │ │ │ ├── delaunay_2d.cpp │ │ │ ├── delaunay_2d.h │ │ │ ├── delaunay_3d.cpp │ │ │ ├── delaunay_3d.h │ │ │ ├── delaunay_nn.cpp │ │ │ ├── delaunay_nn.h │ │ │ ├── delaunay_sync.h │ │ │ ├── delaunay_tetgen.cpp │ │ │ ├── delaunay_tetgen.h │ │ │ ├── delaunay_triangle.cpp │ │ │ ├── delaunay_triangle.h │ │ │ ├── parallel_delaunay_3d.cpp │ │ │ ├── parallel_delaunay_3d.h │ │ │ ├── periodic.cpp │ │ │ ├── periodic.h │ │ │ ├── periodic_delaunay_3d.cpp │ │ │ └── periodic_delaunay_3d.h │ │ ├── geogram.pc.in │ │ ├── image │ │ │ ├── color.h │ │ │ ├── colormap.cpp │ │ │ ├── colormap.h │ │ │ ├── image.cpp │ │ │ ├── image.h │ │ │ ├── image_library.cpp │ │ │ ├── image_library.h │ │ │ ├── image_rasterizer.cpp │ │ │ ├── image_rasterizer.h │ │ │ ├── image_serializer.cpp │ │ │ ├── image_serializer.h │ │ │ ├── image_serializer_pgm.cpp │ │ │ ├── image_serializer_pgm.h │ │ │ ├── image_serializer_stb.cpp │ │ │ ├── image_serializer_stb.h │ │ │ ├── image_serializer_xpm.cpp │ │ │ ├── image_serializer_xpm.h │ │ │ ├── morpho_math.cpp │ │ │ └── morpho_math.h │ │ ├── lua │ │ │ ├── lua_io.cpp │ │ │ ├── lua_io.h │ │ │ └── lua_wrap.h │ │ ├── mesh │ │ │ ├── index.h │ │ │ ├── mesh.cpp │ │ │ ├── mesh.h │ │ │ ├── mesh_AABB.cpp │ │ │ ├── mesh_AABB.h │ │ │ ├── mesh_CSG.cpp │ │ │ ├── mesh_CSG.h │ │ │ ├── mesh_baking.cpp │ │ │ ├── mesh_baking.h │ │ │ ├── mesh_compare.cpp │ │ │ ├── mesh_compare.h │ │ │ ├── mesh_decimate.cpp │ │ │ ├── mesh_decimate.h │ │ │ ├── mesh_degree3_vertices.cpp │ │ │ ├── mesh_degree3_vertices.h │ │ │ ├── mesh_distance.cpp │ │ │ ├── mesh_distance.h │ │ │ ├── mesh_fill_holes.cpp │ │ │ ├── mesh_fill_holes.h │ │ │ ├── mesh_frame_field.cpp │ │ │ ├── mesh_frame_field.h │ │ │ ├── mesh_geometry.cpp │ │ │ ├── mesh_geometry.h │ │ │ ├── mesh_halfedges.cpp │ │ │ ├── mesh_halfedges.h │ │ │ ├── mesh_intersection.h │ │ │ ├── mesh_io.cpp │ │ │ ├── mesh_io.h │ │ │ ├── mesh_local_operations.cpp │ │ │ ├── mesh_local_operations.h │ │ │ ├── mesh_manifold_harmonics.cpp │ │ │ ├── mesh_manifold_harmonics.h │ │ │ ├── mesh_partition.cpp │ │ │ ├── mesh_partition.h │ │ │ ├── mesh_preprocessing.cpp │ │ │ ├── mesh_preprocessing.h │ │ │ ├── mesh_remesh.cpp │ │ │ ├── mesh_remesh.h │ │ │ ├── mesh_reorder.cpp │ │ │ ├── mesh_reorder.h │ │ │ ├── mesh_repair.cpp │ │ │ ├── mesh_repair.h │ │ │ ├── mesh_sampling.h │ │ │ ├── mesh_smoothing.cpp │ │ │ ├── mesh_smoothing.h │ │ │ ├── mesh_subdivision.cpp │ │ │ ├── mesh_subdivision.h │ │ │ ├── mesh_surface_intersection.cpp │ │ │ ├── mesh_surface_intersection.h │ │ │ ├── mesh_surface_intersection_internal.cpp │ │ │ ├── mesh_surface_intersection_internal.h │ │ │ ├── mesh_tetrahedralize.cpp │ │ │ ├── mesh_tetrahedralize.h │ │ │ ├── mesh_topology.cpp │ │ │ ├── mesh_topology.h │ │ │ ├── triangle_intersection.cpp │ │ │ └── triangle_intersection.h │ │ ├── numerics │ │ │ ├── MultiPrecision.psm │ │ │ ├── PCK.cpp │ │ │ ├── PCK.h │ │ │ ├── Predicates.psm │ │ │ ├── exact_geometry.cpp │ │ │ ├── exact_geometry.h │ │ │ ├── expansion_nt.cpp │ │ │ ├── expansion_nt.h │ │ │ ├── interval_nt.h │ │ │ ├── lbfgs_optimizers.cpp │ │ │ ├── lbfgs_optimizers.h │ │ │ ├── matrix_util.cpp │ │ │ ├── matrix_util.h │ │ │ ├── multi_precision.cpp │ │ │ ├── multi_precision.h │ │ │ ├── optimizer.cpp │ │ │ ├── optimizer.h │ │ │ ├── predicates.cpp │ │ │ ├── predicates.h │ │ │ └── predicates │ │ │ │ ├── aligned3d.h │ │ │ │ ├── aligned3d.pck │ │ │ │ ├── det3d.h │ │ │ │ ├── det3d.pck │ │ │ │ ├── det4d.h │ │ │ │ ├── det4d.pck │ │ │ │ ├── det_compare_4d.h │ │ │ │ ├── det_compare_4d.pck │ │ │ │ ├── dot3d.h │ │ │ │ ├── dot3d.pck │ │ │ │ ├── dot_compare_3d.h │ │ │ │ ├── dot_compare_3d.pck │ │ │ │ ├── kernel.pckh │ │ │ │ ├── orient2d.h │ │ │ │ ├── orient2d.pck │ │ │ │ ├── orient3d.h │ │ │ │ ├── orient3d.pck │ │ │ │ ├── orient4d.h │ │ │ │ ├── orient4d.pck │ │ │ │ ├── pck.sh │ │ │ │ ├── side1.h │ │ │ │ ├── side1.pck │ │ │ │ ├── side2.h │ │ │ │ ├── side2.pck │ │ │ │ ├── side3.h │ │ │ │ ├── side3.pck │ │ │ │ ├── side3_2dlifted.h │ │ │ │ ├── side3_2dlifted.pck │ │ │ │ ├── side3h.h │ │ │ │ ├── side4.h │ │ │ │ ├── side4.pck │ │ │ │ ├── side4h.h │ │ │ │ └── side4h.pck │ │ ├── parameterization │ │ │ ├── mesh_ABF.cpp │ │ │ ├── mesh_ABF.h │ │ │ ├── mesh_LSCM.cpp │ │ │ ├── mesh_LSCM.h │ │ │ ├── mesh_PGP_2d.cpp │ │ │ ├── mesh_PGP_2d.h │ │ │ ├── mesh_atlas_maker.cpp │ │ │ ├── mesh_atlas_maker.h │ │ │ ├── mesh_global_param.cpp │ │ │ ├── mesh_global_param.h │ │ │ ├── mesh_param_packer.cpp │ │ │ ├── mesh_param_packer.h │ │ │ ├── mesh_param_validator.cpp │ │ │ ├── mesh_param_validator.h │ │ │ ├── mesh_segmentation.cpp │ │ │ └── mesh_segmentation.h │ │ ├── points │ │ │ ├── co3ne.cpp │ │ │ ├── co3ne.h │ │ │ ├── colocate.cpp │ │ │ ├── colocate.h │ │ │ ├── kd_tree.cpp │ │ │ ├── kd_tree.h │ │ │ ├── nn_search.cpp │ │ │ ├── nn_search.h │ │ │ ├── principal_axes.cpp │ │ │ └── principal_axes.h │ │ ├── third_party │ │ │ ├── CMakeLists.txt │ │ │ ├── HLBFGS │ │ │ │ ├── HLBFGS.cpp │ │ │ │ ├── HLBFGS.h │ │ │ │ ├── HLBFGS_BLAS.cpp │ │ │ │ ├── HLBFGS_BLAS.h │ │ │ │ ├── ICFS.cpp │ │ │ │ ├── ICFS.h │ │ │ │ ├── LineSearch.cpp │ │ │ │ ├── LineSearch.h │ │ │ │ ├── Lite_Sparse_Matrix.cpp │ │ │ │ ├── Lite_Sparse_Matrix.h │ │ │ │ ├── README.txt │ │ │ │ └── Sparse_Entry.h │ │ │ ├── PoissonRecon │ │ │ │ ├── Allocator.h │ │ │ │ ├── Array.h │ │ │ │ ├── Array.inl │ │ │ │ ├── BSplineData.h │ │ │ │ ├── BSplineData.inl │ │ │ │ ├── BinaryNode.h │ │ │ │ ├── Factor.cpp │ │ │ │ ├── Factor.h │ │ │ │ ├── FunctionData.h │ │ │ │ ├── FunctionData.inl │ │ │ │ ├── Geometry.cpp │ │ │ │ ├── Geometry.h │ │ │ │ ├── Geometry.inl │ │ │ │ ├── Hash.h │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── MAT.h │ │ │ │ ├── MAT.inl │ │ │ │ ├── MarchingCubes.cpp │ │ │ │ ├── MarchingCubes.h │ │ │ │ ├── MemoryUsage.h │ │ │ │ ├── MultiGridOctreeData.Evaluation.inl │ │ │ │ ├── MultiGridOctreeData.IsoSurface.inl │ │ │ │ ├── MultiGridOctreeData.SortedTreeNodes.inl │ │ │ │ ├── MultiGridOctreeData.System.inl │ │ │ │ ├── MultiGridOctreeData.WeightedSamples.inl │ │ │ │ ├── MultiGridOctreeData.h │ │ │ │ ├── MultiGridOctreeData.inl │ │ │ │ ├── MyTime.h │ │ │ │ ├── Octree.h │ │ │ │ ├── Octree.inl │ │ │ │ ├── PPolynomial.h │ │ │ │ ├── PPolynomial.inl │ │ │ │ ├── PlyVertexMini.h │ │ │ │ ├── PointStream.h │ │ │ │ ├── PointStream.inl │ │ │ │ ├── Polynomial.h │ │ │ │ ├── Polynomial.inl │ │ │ │ ├── SparseMatrix.h │ │ │ │ ├── SparseMatrix.inl │ │ │ │ ├── poisson_geogram.cpp │ │ │ │ ├── poisson_geogram.h │ │ │ │ └── unused │ │ │ │ │ ├── CmdLineParser.cpp.unused │ │ │ │ │ ├── CmdLineParser.h │ │ │ │ │ ├── CmdLineParser.inl │ │ │ │ │ ├── Ply.h │ │ │ │ │ ├── PlyFile.cpp.unused │ │ │ │ │ ├── PlyPointStream.h │ │ │ │ │ ├── PlyPointStream.inl │ │ │ │ │ ├── PoissonRecon.cpp.unused │ │ │ │ │ └── SurfaceTrimmer.cpp.unused │ │ │ ├── lua │ │ │ │ ├── README │ │ │ │ ├── lapi.c │ │ │ │ ├── lapi.h │ │ │ │ ├── lauxlib.c │ │ │ │ ├── lauxlib.h │ │ │ │ ├── lbaselib.c │ │ │ │ ├── lbitlib.c │ │ │ │ ├── lcode.c │ │ │ │ ├── lcode.h │ │ │ │ ├── lcorolib.c │ │ │ │ ├── lctype.c │ │ │ │ ├── lctype.h │ │ │ │ ├── ldblib.c │ │ │ │ ├── ldebug.c │ │ │ │ ├── ldebug.h │ │ │ │ ├── ldo.c │ │ │ │ ├── ldo.h │ │ │ │ ├── ldump.c │ │ │ │ ├── lfunc.c │ │ │ │ ├── lfunc.h │ │ │ │ ├── lgc.c │ │ │ │ ├── lgc.h │ │ │ │ ├── linit.c │ │ │ │ ├── liolib.c │ │ │ │ ├── llex.c │ │ │ │ ├── llex.h │ │ │ │ ├── llimits.h │ │ │ │ ├── lmathlib.c │ │ │ │ ├── lmem.c │ │ │ │ ├── lmem.h │ │ │ │ ├── loadlib.c │ │ │ │ ├── lobject.c │ │ │ │ ├── lobject.h │ │ │ │ ├── lopcodes.c │ │ │ │ ├── lopcodes.h │ │ │ │ ├── loslib.c │ │ │ │ ├── lparser.c │ │ │ │ ├── lparser.h │ │ │ │ ├── lprefix.h │ │ │ │ ├── lstate.c │ │ │ │ ├── lstate.h │ │ │ │ ├── lstring.c │ │ │ │ ├── lstring.h │ │ │ │ ├── lstrlib.c │ │ │ │ ├── ltable.c │ │ │ │ ├── ltable.h │ │ │ │ ├── ltablib.c │ │ │ │ ├── ltm.c │ │ │ │ ├── ltm.h │ │ │ │ ├── lua.h │ │ │ │ ├── luaconf.h │ │ │ │ ├── lualib.h │ │ │ │ ├── lundump.c │ │ │ │ ├── lundump.h │ │ │ │ ├── lutf8lib.c │ │ │ │ ├── lvm.c │ │ │ │ ├── lvm.h │ │ │ │ ├── lzio.c │ │ │ │ └── lzio.h │ │ │ ├── stb │ │ │ │ └── stb_c_lexer.h │ │ │ ├── stb_image │ │ │ │ ├── stb_image.h │ │ │ │ └── stb_image_write.h │ │ │ ├── tetgen │ │ │ │ ├── README.txt │ │ │ │ ├── Tetgen1.6 │ │ │ │ │ ├── README │ │ │ │ │ ├── tetgen.cpp │ │ │ │ │ └── tetgen.h │ │ │ │ ├── tetgen.cpp │ │ │ │ └── tetgen.h │ │ │ ├── triangle │ │ │ │ ├── README │ │ │ │ ├── triangle.c │ │ │ │ └── triangle.h │ │ │ ├── xatlas │ │ │ │ ├── README.md │ │ │ │ ├── xatlas.cpp │ │ │ │ └── xatlas.h │ │ │ └── zlib │ │ │ │ ├── LICENSE │ │ │ │ ├── adler32.c │ │ │ │ ├── compress.c │ │ │ │ ├── crc32.c │ │ │ │ ├── crc32.h │ │ │ │ ├── deflate.c │ │ │ │ ├── deflate.h │ │ │ │ ├── fix_includes.sh │ │ │ │ ├── gzclose.c │ │ │ │ ├── gzguts.h │ │ │ │ ├── gzlib.c │ │ │ │ ├── gzread.c │ │ │ │ ├── gzwrite.c │ │ │ │ ├── infback.c │ │ │ │ ├── inffast.c │ │ │ │ ├── inffast.h │ │ │ │ ├── inffixed.h │ │ │ │ ├── inflate.c │ │ │ │ ├── inflate.h │ │ │ │ ├── inftrees.c │ │ │ │ ├── inftrees.h │ │ │ │ ├── trees.c │ │ │ │ ├── trees.h │ │ │ │ ├── uncompr.c │ │ │ │ ├── zconf.h │ │ │ │ ├── zlib.h │ │ │ │ ├── zutil.c │ │ │ │ └── zutil.h │ │ └── voronoi │ │ │ ├── CVT.cpp │ │ │ ├── CVT.h │ │ │ ├── RVD.cpp │ │ │ ├── RVD.h │ │ │ ├── RVD_callback.cpp │ │ │ ├── RVD_callback.h │ │ │ ├── RVD_mesh_builder.cpp │ │ │ ├── RVD_mesh_builder.h │ │ │ ├── convex_cell.cpp │ │ │ ├── convex_cell.h │ │ │ ├── generic_RVD.h │ │ │ ├── generic_RVD_cell.cpp │ │ │ ├── generic_RVD_cell.h │ │ │ ├── generic_RVD_polygon.cpp │ │ │ ├── generic_RVD_polygon.h │ │ │ ├── generic_RVD_utils.h │ │ │ ├── generic_RVD_vertex.h │ │ │ ├── integration_simplex.cpp │ │ │ └── integration_simplex.h │ ├── geogram_gfx │ │ ├── CMakeLists.txt │ │ ├── GLUP │ │ │ ├── GLUP.cpp │ │ │ ├── GLUP.h │ │ │ ├── GLUP_context.cpp │ │ │ ├── GLUP_context.h │ │ │ ├── GLUP_context_ES.cpp │ │ │ ├── GLUP_context_ES.h │ │ │ ├── GLUP_context_GLSL.cpp │ │ │ ├── GLUP_context_GLSL.h │ │ │ ├── GLUP_marching_cells.cpp │ │ │ ├── GLUP_marching_cells.h │ │ │ ├── GLUP_private.h │ │ │ └── shaders │ │ │ │ ├── GLUP │ │ │ │ ├── ShaderToy.h │ │ │ │ ├── constants.h │ │ │ │ ├── defs.h │ │ │ │ ├── fragment_ray_tracing.h │ │ │ │ ├── fragment_shader_utils.h │ │ │ │ ├── portable_fragment_shader.h │ │ │ │ └── stdglup.h │ │ │ │ ├── GLUPES │ │ │ │ ├── fragment_shader.h │ │ │ │ ├── fragment_shader_state.h │ │ │ │ ├── fragment_shader_utils.h │ │ │ │ ├── lines_fragment_shader.h │ │ │ │ ├── points_fragment_shader.h │ │ │ │ ├── points_vertex_shader.h │ │ │ │ ├── spheres_fragment_shader.h │ │ │ │ ├── spheres_vertex_shader.h │ │ │ │ ├── thick_lines_fragment_shader.h │ │ │ │ ├── thick_lines_vertex_shader.h │ │ │ │ ├── vertex_shader.h │ │ │ │ └── vertex_shader_state.h │ │ │ │ ├── GLUPGLSL │ │ │ │ ├── fragment_shader.h │ │ │ │ ├── gather_vertex_shader.h │ │ │ │ ├── geometry_shader_preamble.h │ │ │ │ ├── lines_fragment_shader.h │ │ │ │ ├── marching_cells.h │ │ │ │ ├── points_fragment_shader.h │ │ │ │ ├── points_vertex_shader.h │ │ │ │ ├── spheres_fragment_shader.h │ │ │ │ ├── spheres_vertex_shader.h │ │ │ │ ├── state.h │ │ │ │ ├── tess_evaluation_shader.h │ │ │ │ ├── thick_lines_fragment_shader.h │ │ │ │ ├── thick_lines_geometry_shader.h │ │ │ │ ├── thick_lines_vertex_shader.h │ │ │ │ └── vertex_shader.h │ │ │ │ ├── embed_shaders.sh │ │ │ │ ├── embedded_shaders.cpp │ │ │ │ ├── embedded_shaders.h │ │ │ │ └── fullscreen │ │ │ │ ├── ambient_occlusion_fragment_shader.h │ │ │ │ ├── blur_fragment_shader.h │ │ │ │ ├── depth_dependent_blur_fragment_shader.h │ │ │ │ ├── unsharp_masking_fragment_shader.h │ │ │ │ └── vertex_shader.h │ │ ├── api │ │ │ └── defs.h │ │ ├── basic │ │ │ ├── GL.cpp │ │ │ ├── GL.h │ │ │ ├── GLSL.cpp │ │ │ ├── GLSL.h │ │ │ ├── common.cpp │ │ │ ├── common.h │ │ │ ├── frame_buffer_object.cpp │ │ │ └── frame_buffer_object.h │ │ ├── full_screen_effects │ │ │ ├── ambient_occlusion.cpp │ │ │ ├── ambient_occlusion.h │ │ │ ├── full_screen_effect.cpp │ │ │ ├── full_screen_effect.h │ │ │ ├── unsharp_masking.cpp │ │ │ └── unsharp_masking.h │ │ ├── geogram_gfx.pc.in │ │ ├── gui │ │ │ ├── application.cpp │ │ │ ├── application.h │ │ │ ├── arc_ball.cpp │ │ │ ├── arc_ball.h │ │ │ ├── colormaps │ │ │ │ ├── README.txt │ │ │ │ ├── black_white.xpm │ │ │ │ ├── blue_red.xpm │ │ │ │ ├── cei_60757.xpm │ │ │ │ ├── french.xpm │ │ │ │ ├── inferno.xpm │ │ │ │ ├── magma.xpm │ │ │ │ ├── parula.xpm │ │ │ │ ├── plasma.xpm │ │ │ │ ├── rainbow.xpm │ │ │ │ └── viridis.xpm │ │ │ ├── command.cpp │ │ │ ├── command.h │ │ │ ├── console.cpp │ │ │ ├── console.h │ │ │ ├── events.h │ │ │ ├── geogram_logo_256.xpm │ │ │ ├── gui_state.h │ │ │ ├── gui_state_h.h │ │ │ ├── gui_state_v.h │ │ │ ├── simple_application.cpp │ │ │ ├── simple_application.h │ │ │ ├── simple_mesh_application.cpp │ │ │ ├── simple_mesh_application.h │ │ │ ├── status_bar.cpp │ │ │ ├── status_bar.h │ │ │ ├── text_editor.cpp │ │ │ ├── text_editor.h │ │ │ ├── user_callback_android.cpp │ │ │ └── user_callback_android.h │ │ ├── imgui_ext │ │ │ ├── icon_font.cpp │ │ │ ├── icon_font.h │ │ │ ├── imgui_ext.cpp │ │ │ ├── imgui_ext.h │ │ │ ├── imgui_impl_android_ext.cpp │ │ │ └── imgui_impl_android_ext.h │ │ ├── lua │ │ │ ├── lua_glup.cpp │ │ │ ├── lua_glup.h │ │ │ ├── lua_imgui.cpp │ │ │ ├── lua_imgui.h │ │ │ ├── lua_simple_application.cpp │ │ │ └── lua_simple_application.h │ │ ├── mesh │ │ │ ├── mesh_gfx.cpp │ │ │ └── mesh_gfx.h │ │ └── third_party │ │ │ ├── CMakeLists.txt │ │ │ ├── ImGuiColorTextEdit │ │ │ ├── LICENSE.txt │ │ │ ├── README.txt │ │ │ ├── TextEditor.cpp │ │ │ └── TextEditor.h │ │ │ ├── geogram_imconfig.h │ │ │ ├── glad │ │ │ ├── KHR │ │ │ │ └── khrplatform.h │ │ │ ├── LICENSE │ │ │ ├── README.txt │ │ │ ├── glad.c │ │ │ └── glad.h │ │ │ ├── glup_compat.h │ │ │ ├── imgui_fonts │ │ │ ├── README.txt │ │ │ ├── cousine_regular.h │ │ │ ├── fa_brands.h │ │ │ ├── fa_regular.h │ │ │ ├── fa_solid.h │ │ │ └── roboto_medium.h │ │ │ └── imgui_lua_bindings │ │ │ ├── README.md │ │ │ ├── README.txt │ │ │ ├── generate_imgui_bindings.pl │ │ │ ├── imgui_iterator.h │ │ │ ├── imgui_lua_bindings.cpp │ │ │ └── parse_blocks.pl │ └── third_party │ │ ├── CMakeLists.txt │ │ └── numerics │ │ ├── ARPACK │ │ ├── LICENSE │ │ ├── README │ │ ├── cgetv0.c │ │ ├── cnaitr.c │ │ ├── cnapps.c │ │ ├── cnaup2.c │ │ ├── cnaupd.c │ │ ├── cneigh.c │ │ ├── cneupd.c │ │ ├── cngets.c │ │ ├── csortc.c │ │ ├── cstatn.c │ │ ├── dgetv0.c │ │ ├── dlaqrb.c │ │ ├── dnaitr.c │ │ ├── dnapps.c │ │ ├── dnaup2.c │ │ ├── dnaupd.c │ │ ├── dnaupe.c │ │ ├── dnconv.c │ │ ├── dneigh.c │ │ ├── dneupd.c │ │ ├── dngets.c │ │ ├── dsaitr.c │ │ ├── dsapps.c │ │ ├── dsaup2.c │ │ ├── dsaupd.c │ │ ├── dsconv.c │ │ ├── dseigt.c │ │ ├── dsesrt.c │ │ ├── dseupd.c │ │ ├── dsgets.c │ │ ├── dsortc.c │ │ ├── dsortr.c │ │ ├── dstatn.c │ │ ├── dstats.c │ │ ├── dstqrb.c │ │ ├── protos.h │ │ ├── sgetv0.c │ │ ├── slaqrb.c │ │ ├── snaitr.c │ │ ├── snapps.c │ │ ├── snaup2.c │ │ ├── snaupd.c │ │ ├── snaupe.c │ │ ├── snconv.c │ │ ├── sneigh.c │ │ ├── sneupd.c │ │ ├── sngets.c │ │ ├── ssaitr.c │ │ ├── ssapps.c │ │ ├── ssaup2.c │ │ ├── ssaupd.c │ │ ├── ssconv.c │ │ ├── sseigt.c │ │ ├── ssesrt.c │ │ ├── sseupd.c │ │ ├── ssgets.c │ │ ├── ssortc.c │ │ ├── ssortr.c │ │ ├── sstatn.c │ │ ├── sstats.c │ │ ├── sstqrb.c │ │ ├── zgetv0.c │ │ ├── znaitr.c │ │ ├── znapps.c │ │ ├── znaup2.c │ │ ├── znaupd.c │ │ ├── zneigh.c │ │ ├── zneupd.c │ │ ├── zngets.c │ │ ├── zsortc.c │ │ └── zstatn.c │ │ ├── ARPACK_UTIL │ │ ├── LICENSE │ │ ├── README │ │ ├── cmout.c │ │ ├── cvout.c │ │ ├── dmout.c │ │ ├── dvout.c │ │ ├── icnteq.c │ │ ├── icopy.c │ │ ├── iset.c │ │ ├── iswap.c │ │ ├── ivout.c │ │ ├── second.c │ │ ├── smout.c │ │ ├── svout.c │ │ ├── zmout.c │ │ └── zvout.c │ │ ├── CBLAS │ │ ├── COPYING │ │ ├── Makefile │ │ ├── README │ │ ├── caxpy.c │ │ ├── ccopy.c │ │ ├── cdotc.c │ │ ├── cdotu.c │ │ ├── cgbmv.c │ │ ├── cgemm.c │ │ ├── cgemv.c │ │ ├── cgerc.c │ │ ├── cgeru.c │ │ ├── chbmv.c │ │ ├── chemm.c │ │ ├── chemv.c │ │ ├── cher.c │ │ ├── cher2.c │ │ ├── cher2k.c │ │ ├── cherk.c │ │ ├── chpmv.c │ │ ├── chpr.c │ │ ├── chpr2.c │ │ ├── crotg.c │ │ ├── cscal.c │ │ ├── csrot.c │ │ ├── csscal.c │ │ ├── cswap.c │ │ ├── csymm.c │ │ ├── csyr2k.c │ │ ├── csyrk.c │ │ ├── ctbmv.c │ │ ├── ctbsv.c │ │ ├── ctpmv.c │ │ ├── ctpsv.c │ │ ├── ctrmm.c │ │ ├── ctrmv.c │ │ ├── ctrsm.c │ │ ├── ctrsv.c │ │ ├── dasum.c │ │ ├── daxpy.c │ │ ├── dcabs1.c │ │ ├── dcopy.c │ │ ├── ddot.c │ │ ├── dgbmv.c │ │ ├── dgemm.c │ │ ├── dgemv.c │ │ ├── dger.c │ │ ├── dnrm2.c │ │ ├── drot.c │ │ ├── drotg.c │ │ ├── drotm.c │ │ ├── drotmg.c │ │ ├── dsbmv.c │ │ ├── dscal.c │ │ ├── dsdot.c │ │ ├── dspmv.c │ │ ├── dspr.c │ │ ├── dspr2.c │ │ ├── dswap.c │ │ ├── dsymm.c │ │ ├── dsymv.c │ │ ├── dsyr.c │ │ ├── dsyr2.c │ │ ├── dsyr2k.c │ │ ├── dsyrk.c │ │ ├── dtbmv.c │ │ ├── dtbsv.c │ │ ├── dtpmv.c │ │ ├── dtpsv.c │ │ ├── dtrmm.c │ │ ├── dtrmv.c │ │ ├── dtrsm.c │ │ ├── dtrsv.c │ │ ├── dzasum.c │ │ ├── dznrm2.c │ │ ├── icamax.c │ │ ├── idamax.c │ │ ├── isamax.c │ │ ├── izamax.c │ │ ├── lsame.c │ │ ├── sasum.c │ │ ├── saxpy.c │ │ ├── scabs1.c │ │ ├── scasum.c │ │ ├── scnrm2.c │ │ ├── scopy.c │ │ ├── sdot.c │ │ ├── sdsdot.c │ │ ├── sgbmv.c │ │ ├── sgemm.c │ │ ├── sgemv.c │ │ ├── sger.c │ │ ├── snrm2.c │ │ ├── srot.c │ │ ├── srotg.c │ │ ├── srotm.c │ │ ├── srotmg.c │ │ ├── ssbmv.c │ │ ├── sscal.c │ │ ├── sspmv.c │ │ ├── sspr.c │ │ ├── sspr2.c │ │ ├── sswap.c │ │ ├── ssymm.c │ │ ├── ssymv.c │ │ ├── ssyr.c │ │ ├── ssyr2.c │ │ ├── ssyr2k.c │ │ ├── ssyrk.c │ │ ├── stbmv.c │ │ ├── stbsv.c │ │ ├── stpmv.c │ │ ├── stpsv.c │ │ ├── strmm.c │ │ ├── strmv.c │ │ ├── strsm.c │ │ ├── strsv.c │ │ ├── xerbla.c │ │ ├── xerbla_array.c │ │ ├── zaxpy.c │ │ ├── zcopy.c │ │ ├── zdotc.c │ │ ├── zdotu.c │ │ ├── zdrot.c │ │ ├── zdscal.c │ │ ├── zgbmv.c │ │ ├── zgemm.c │ │ ├── zgemv.c │ │ ├── zgerc.c │ │ ├── zgeru.c │ │ ├── zhbmv.c │ │ ├── zhemm.c │ │ ├── zhemv.c │ │ ├── zher.c │ │ ├── zher2.c │ │ ├── zher2k.c │ │ ├── zherk.c │ │ ├── zhpmv.c │ │ ├── zhpr.c │ │ ├── zhpr2.c │ │ ├── zrotg.c │ │ ├── zscal.c │ │ ├── zswap.c │ │ ├── zsymm.c │ │ ├── zsyr2k.c │ │ ├── zsyrk.c │ │ ├── ztbmv.c │ │ ├── ztbsv.c │ │ ├── ztpmv.c │ │ ├── ztpsv.c │ │ ├── ztrmm.c │ │ ├── ztrmv.c │ │ ├── ztrsm.c │ │ └── ztrsv.c │ │ ├── CLAPACK │ │ ├── COPYING │ │ ├── README │ │ ├── clapack_cgeqr2.c │ │ ├── clapack_clacn2.c │ │ ├── clapack_clacpy.c │ │ ├── clapack_cladiv.c │ │ ├── clapack_clahqr.c │ │ ├── clapack_clange.c │ │ ├── clapack_clanhs.c │ │ ├── clapack_clarf.c │ │ ├── clapack_clarfg.c │ │ ├── clapack_clarfp.c │ │ ├── clapack_clarnv.c │ │ ├── clapack_clartg.c │ │ ├── clapack_clascl.c │ │ ├── clapack_claset.c │ │ ├── clapack_classq.c │ │ ├── clapack_clatrs.c │ │ ├── clapack_crot.c │ │ ├── clapack_ctrevc.c │ │ ├── clapack_ctrexc.c │ │ ├── clapack_ctrsen.c │ │ ├── clapack_ctrsyl.c │ │ ├── clapack_cunm2r.c │ │ ├── clapack_dgeqr2.c │ │ ├── clapack_disnan.c │ │ ├── clapack_dlabad.c │ │ ├── clapack_dlacn2.c │ │ ├── clapack_dlacpy.c │ │ ├── clapack_dladiv.c │ │ ├── clapack_dlae2.c │ │ ├── clapack_dlaev2.c │ │ ├── clapack_dlaexc.c │ │ ├── clapack_dlahqr.c │ │ ├── clapack_dlaisnan.c │ │ ├── clapack_dlaln2.c │ │ ├── clapack_dlamch.c │ │ ├── clapack_dlange.c │ │ ├── clapack_dlanhs.c │ │ ├── clapack_dlanst.c │ │ ├── clapack_dlanv2.c │ │ ├── clapack_dlapy2.c │ │ ├── clapack_dlapy3.c │ │ ├── clapack_dlarf.c │ │ ├── clapack_dlarfg.c │ │ ├── clapack_dlarfp.c │ │ ├── clapack_dlarfx.c │ │ ├── clapack_dlarnv.c │ │ ├── clapack_dlartg.c │ │ ├── clapack_dlaruv.c │ │ ├── clapack_dlascl.c │ │ ├── clapack_dlaset.c │ │ ├── clapack_dlasr.c │ │ ├── clapack_dlasrt.c │ │ ├── clapack_dlassq.c │ │ ├── clapack_dlasy2.c │ │ ├── clapack_dorm2r.c │ │ ├── clapack_dsteqr.c │ │ ├── clapack_dtrevc.c │ │ ├── clapack_dtrexc.c │ │ ├── clapack_dtrsen.c │ │ ├── clapack_dtrsyl.c │ │ ├── clapack_dummy_argc.c │ │ ├── clapack_dzsum1.c │ │ ├── clapack_icmax1.c │ │ ├── clapack_ilaclc.c │ │ ├── clapack_ilaclr.c │ │ ├── clapack_iladlc.c │ │ ├── clapack_iladlr.c │ │ ├── clapack_ilaslc.c │ │ ├── clapack_ilaslr.c │ │ ├── clapack_ilazlc.c │ │ ├── clapack_ilazlr.c │ │ ├── clapack_izmax1.c │ │ ├── clapack_scsum1.c │ │ ├── clapack_sgeqr2.c │ │ ├── clapack_sisnan.c │ │ ├── clapack_slabad.c │ │ ├── clapack_slacn2.c │ │ ├── clapack_slacpy.c │ │ ├── clapack_sladiv.c │ │ ├── clapack_slae2.c │ │ ├── clapack_slaev2.c │ │ ├── clapack_slaexc.c │ │ ├── clapack_slahqr.c │ │ ├── clapack_slaisnan.c │ │ ├── clapack_slaln2.c │ │ ├── clapack_slamch.c │ │ ├── clapack_slange.c │ │ ├── clapack_slanhs.c │ │ ├── clapack_slanst.c │ │ ├── clapack_slanv2.c │ │ ├── clapack_slapy2.c │ │ ├── clapack_slapy3.c │ │ ├── clapack_slarf.c │ │ ├── clapack_slarfg.c │ │ ├── clapack_slarfp.c │ │ ├── clapack_slarfx.c │ │ ├── clapack_slarnv.c │ │ ├── clapack_slartg.c │ │ ├── clapack_slaruv.c │ │ ├── clapack_slascl.c │ │ ├── clapack_slaset.c │ │ ├── clapack_slasr.c │ │ ├── clapack_slasrt.c │ │ ├── clapack_slassq.c │ │ ├── clapack_slasy2.c │ │ ├── clapack_sorm2r.c │ │ ├── clapack_ssteqr.c │ │ ├── clapack_strevc.c │ │ ├── clapack_strexc.c │ │ ├── clapack_strsen.c │ │ ├── clapack_strsyl.c │ │ ├── clapack_zgeqr2.c │ │ ├── clapack_zlacn2.c │ │ ├── clapack_zlacpy.c │ │ ├── clapack_zladiv.c │ │ ├── clapack_zlahqr.c │ │ ├── clapack_zlange.c │ │ ├── clapack_zlanhs.c │ │ ├── clapack_zlarf.c │ │ ├── clapack_zlarfg.c │ │ ├── clapack_zlarfp.c │ │ ├── clapack_zlarnv.c │ │ ├── clapack_zlartg.c │ │ ├── clapack_zlascl.c │ │ ├── clapack_zlaset.c │ │ ├── clapack_zlassq.c │ │ ├── clapack_zlatrs.c │ │ ├── clapack_zrot.c │ │ ├── clapack_ztrevc.c │ │ ├── clapack_ztrexc.c │ │ ├── clapack_ztrsen.c │ │ ├── clapack_ztrsyl.c │ │ └── clapack_zunm2r.c │ │ ├── CMakeLists.txt │ │ ├── INCLUDE │ │ ├── COPYING │ │ ├── README │ │ ├── blaswrap.h │ │ ├── clapack.h │ │ └── f2c.h │ │ ├── LIBF2C │ │ ├── arith.h │ │ ├── ctype.h │ │ ├── f2c.h │ │ ├── fio.h │ │ ├── fmt.h │ │ ├── fp.h │ │ ├── ftell64_.c.unused │ │ ├── libf2c_abort_.c │ │ ├── libf2c_backspac.c │ │ ├── libf2c_c_abs.c │ │ ├── libf2c_c_cos.c │ │ ├── libf2c_c_div.c │ │ ├── libf2c_c_exp.c │ │ ├── libf2c_c_log.c │ │ ├── libf2c_c_sin.c │ │ ├── libf2c_c_sqrt.c │ │ ├── libf2c_cabs.c │ │ ├── libf2c_close.c │ │ ├── libf2c_ctype.c │ │ ├── libf2c_d_abs.c │ │ ├── libf2c_d_acos.c │ │ ├── libf2c_d_asin.c │ │ ├── libf2c_d_atan.c │ │ ├── libf2c_d_atn2.c │ │ ├── libf2c_d_cnjg.c │ │ ├── libf2c_d_cos.c │ │ ├── libf2c_d_cosh.c │ │ ├── libf2c_d_dim.c │ │ ├── libf2c_d_exp.c │ │ ├── libf2c_d_imag.c │ │ ├── libf2c_d_int.c │ │ ├── libf2c_d_lg10.c │ │ ├── libf2c_d_log.c │ │ ├── libf2c_d_mod.c │ │ ├── libf2c_d_nint.c │ │ ├── libf2c_d_prod.c │ │ ├── libf2c_d_sign.c │ │ ├── libf2c_d_sin.c │ │ ├── libf2c_d_sinh.c │ │ ├── libf2c_d_sqrt.c │ │ ├── libf2c_d_tan.c │ │ ├── libf2c_d_tanh.c │ │ ├── libf2c_derf_.c │ │ ├── libf2c_derfc_.c │ │ ├── libf2c_dfe.c │ │ ├── libf2c_dolio.c │ │ ├── libf2c_dtime_.c │ │ ├── libf2c_due.c │ │ ├── libf2c_ef1asc_.c │ │ ├── libf2c_ef1cmc_.c │ │ ├── libf2c_endfile.c │ │ ├── libf2c_erf_.c │ │ ├── libf2c_erfc_.c │ │ ├── libf2c_err.c │ │ ├── libf2c_etime_.c │ │ ├── libf2c_exit_.c │ │ ├── libf2c_f77_aloc.c │ │ ├── libf2c_f77vers.c │ │ ├── libf2c_fmt.c │ │ ├── libf2c_fmtlib.c │ │ ├── libf2c_ftell_.c │ │ ├── libf2c_getarg_.c │ │ ├── libf2c_getenv_.c │ │ ├── libf2c_h_abs.c │ │ ├── libf2c_h_dim.c │ │ ├── libf2c_h_dnnt.c │ │ ├── libf2c_h_indx.c │ │ ├── libf2c_h_len.c │ │ ├── libf2c_h_mod.c │ │ ├── libf2c_h_nint.c │ │ ├── libf2c_h_sign.c │ │ ├── libf2c_hl_ge.c │ │ ├── libf2c_hl_gt.c │ │ ├── libf2c_hl_le.c │ │ ├── libf2c_hl_lt.c │ │ ├── libf2c_i77vers.c │ │ ├── libf2c_i_abs.c │ │ ├── libf2c_i_ceiling.c │ │ ├── libf2c_i_dim.c │ │ ├── libf2c_i_dnnt.c │ │ ├── libf2c_i_indx.c │ │ ├── libf2c_i_len.c │ │ ├── libf2c_i_len_trim.c │ │ ├── libf2c_i_mod.c │ │ ├── libf2c_i_nint.c │ │ ├── libf2c_i_sign.c │ │ ├── libf2c_iargc_.c │ │ ├── libf2c_iio.c │ │ ├── libf2c_ilnw.c │ │ ├── libf2c_inquire.c │ │ ├── libf2c_l_ge.c │ │ ├── libf2c_l_gt.c │ │ ├── libf2c_l_le.c │ │ ├── libf2c_l_lt.c │ │ ├── libf2c_lbitbits.c │ │ ├── libf2c_lbitshft.c │ │ ├── libf2c_lread.c │ │ ├── libf2c_lwrite.c │ │ ├── libf2c_missing_erf.c │ │ ├── libf2c_open.c │ │ ├── libf2c_pow_ci.c │ │ ├── libf2c_pow_dd.c │ │ ├── libf2c_pow_di.c │ │ ├── libf2c_pow_hh.c │ │ ├── libf2c_pow_ii.c │ │ ├── libf2c_pow_ri.c │ │ ├── libf2c_pow_zi.c │ │ ├── libf2c_pow_zz.c │ │ ├── libf2c_r_abs.c │ │ ├── libf2c_r_acos.c │ │ ├── libf2c_r_asin.c │ │ ├── libf2c_r_atan.c │ │ ├── libf2c_r_atn2.c │ │ ├── libf2c_r_cnjg.c │ │ ├── libf2c_r_cos.c │ │ ├── libf2c_r_cosh.c │ │ ├── libf2c_r_dim.c │ │ ├── libf2c_r_exp.c │ │ ├── libf2c_r_imag.c │ │ ├── libf2c_r_int.c │ │ ├── libf2c_r_lg10.c │ │ ├── libf2c_r_log.c │ │ ├── libf2c_r_mod.c │ │ ├── libf2c_r_nint.c │ │ ├── libf2c_r_sign.c │ │ ├── libf2c_r_sin.c │ │ ├── libf2c_r_sinh.c │ │ ├── libf2c_r_sqrt.c │ │ ├── libf2c_r_tan.c │ │ ├── libf2c_r_tanh.c │ │ ├── libf2c_rdfmt.c │ │ ├── libf2c_rewind.c │ │ ├── libf2c_rsfe.c │ │ ├── libf2c_rsli.c │ │ ├── libf2c_rsne.c │ │ ├── libf2c_s_cat.c │ │ ├── libf2c_s_cmp.c │ │ ├── libf2c_s_copy.c │ │ ├── libf2c_s_paus.c │ │ ├── libf2c_s_rnge.c │ │ ├── libf2c_s_stop.c │ │ ├── libf2c_sfe.c │ │ ├── libf2c_sig_die.c │ │ ├── libf2c_signal_.c │ │ ├── libf2c_signbit.c │ │ ├── libf2c_sue.c │ │ ├── libf2c_system_.c │ │ ├── libf2c_typesize.c │ │ ├── libf2c_uio.c │ │ ├── libf2c_uninit.c │ │ ├── libf2c_util.c │ │ ├── libf2c_wref.c │ │ ├── libf2c_wrtfmt.c │ │ ├── libf2c_wsfe.c │ │ ├── libf2c_wsle.c │ │ ├── libf2c_wsne.c │ │ ├── libf2c_xwsne.c │ │ ├── libf2c_z_abs.c │ │ ├── libf2c_z_cos.c │ │ ├── libf2c_z_div.c │ │ ├── libf2c_z_exp.c │ │ ├── libf2c_z_log.c │ │ ├── libf2c_z_sin.c │ │ ├── libf2c_z_sqrt.c │ │ ├── lio.h │ │ ├── main.c.unused │ │ ├── pow_qq.c.unused │ │ ├── qbitbits.c.unused │ │ ├── qbitshft.c.unused │ │ ├── rawio.h │ │ ├── signal1.h │ │ └── sysdep1.h │ │ ├── SUPERLU │ │ ├── CMakeLists.txt │ │ ├── License.txt │ │ ├── Makefile │ │ ├── README │ │ ├── ccolumn_bmod.c │ │ ├── ccolumn_dfs.c │ │ ├── ccopy_to_ucol.c │ │ ├── cdiagonal.c │ │ ├── cgscon.c │ │ ├── cgsequ.c │ │ ├── cgsisx.c │ │ ├── cgsitrf.c │ │ ├── cgsrfs.c │ │ ├── cgssv.c │ │ ├── cgssvx.c │ │ ├── cgstrf.c │ │ ├── cgstrs.c │ │ ├── clacon2.c │ │ ├── clangs.c │ │ ├── claqgs.c │ │ ├── cldperm.c │ │ ├── cmemory.c │ │ ├── cmyblas2.c │ │ ├── colamd.c │ │ ├── colamd.h │ │ ├── cpanel_bmod.c │ │ ├── cpanel_dfs.c │ │ ├── cpivotL.c │ │ ├── cpivotgrowth.c │ │ ├── cpruneL.c │ │ ├── creadhb.c │ │ ├── creadrb.c │ │ ├── creadtriple.c │ │ ├── csnode_bmod.c │ │ ├── csnode_dfs.c │ │ ├── csp_blas2.c │ │ ├── csp_blas3.c │ │ ├── cutil.c │ │ ├── dcolumn_bmod.c │ │ ├── dcolumn_dfs.c │ │ ├── dcomplex.c │ │ ├── dcopy_to_ucol.c │ │ ├── ddiagonal.c │ │ ├── dgscon.c │ │ ├── dgsequ.c │ │ ├── dgsisx.c │ │ ├── dgsitrf.c │ │ ├── dgsrfs.c │ │ ├── dgssv.c │ │ ├── dgssvx.c │ │ ├── dgstrf.c │ │ ├── dgstrs.c │ │ ├── dlacon2.c │ │ ├── dlangs.c │ │ ├── dlaqgs.c │ │ ├── dldperm.c │ │ ├── dmach.c │ │ ├── dmemory.c │ │ ├── dmyblas2.c │ │ ├── dpanel_bmod.c │ │ ├── dpanel_dfs.c │ │ ├── dpivotL.c │ │ ├── dpivotgrowth.c │ │ ├── dpruneL.c │ │ ├── dreadhb.c │ │ ├── dreadrb.c │ │ ├── dreadtriple.c │ │ ├── dsnode_bmod.c │ │ ├── dsnode_dfs.c │ │ ├── dsp_blas2.c │ │ ├── dsp_blas3.c │ │ ├── dutil.c │ │ ├── dzsum1.c │ │ ├── get_perm_c.c │ │ ├── heap_relax_snode.c │ │ ├── html_mainpage.h │ │ ├── icmax1.c │ │ ├── ilu_ccolumn_dfs.c │ │ ├── ilu_ccopy_to_ucol.c │ │ ├── ilu_cdrop_row.c │ │ ├── ilu_cpanel_dfs.c │ │ ├── ilu_cpivotL.c │ │ ├── ilu_csnode_dfs.c │ │ ├── ilu_dcolumn_dfs.c │ │ ├── ilu_dcopy_to_ucol.c │ │ ├── ilu_ddrop_row.c │ │ ├── ilu_dpanel_dfs.c │ │ ├── ilu_dpivotL.c │ │ ├── ilu_dsnode_dfs.c │ │ ├── ilu_heap_relax_snode.c │ │ ├── ilu_relax_snode.c │ │ ├── ilu_scolumn_dfs.c │ │ ├── ilu_scopy_to_ucol.c │ │ ├── ilu_sdrop_row.c │ │ ├── ilu_spanel_dfs.c │ │ ├── ilu_spivotL.c │ │ ├── ilu_ssnode_dfs.c │ │ ├── ilu_zcolumn_dfs.c │ │ ├── ilu_zcopy_to_ucol.c │ │ ├── ilu_zdrop_row.c │ │ ├── ilu_zpanel_dfs.c │ │ ├── ilu_zpivotL.c │ │ ├── ilu_zsnode_dfs.c │ │ ├── input_error.c │ │ ├── izmax1.c │ │ ├── mark_relax.c │ │ ├── mc64ad.c │ │ ├── memory.c │ │ ├── mmd.c │ │ ├── qselect.c │ │ ├── relax_snode.c │ │ ├── scolumn_bmod.c │ │ ├── scolumn_dfs.c │ │ ├── scomplex.c │ │ ├── scopy_to_ucol.c │ │ ├── scsum1.c │ │ ├── sdiagonal.c │ │ ├── sgscon.c │ │ ├── sgsequ.c │ │ ├── sgsisx.c │ │ ├── sgsitrf.c │ │ ├── sgsrfs.c │ │ ├── sgssv.c │ │ ├── sgssvx.c │ │ ├── sgstrf.c │ │ ├── sgstrs.c │ │ ├── slacon2.c │ │ ├── slangs.c │ │ ├── slaqgs.c │ │ ├── sldperm.c │ │ ├── slu_Cnames.h │ │ ├── slu_cdefs.h │ │ ├── slu_dcomplex.h │ │ ├── slu_ddefs.h │ │ ├── slu_scomplex.h │ │ ├── slu_sdefs.h │ │ ├── slu_util.h │ │ ├── slu_zdefs.h │ │ ├── smach.c │ │ ├── smemory.c │ │ ├── smyblas2.c │ │ ├── sp_coletree.c │ │ ├── sp_ienv.c │ │ ├── sp_preorder.c │ │ ├── spanel_bmod.c │ │ ├── spanel_dfs.c │ │ ├── spivotL.c │ │ ├── spivotgrowth.c │ │ ├── spruneL.c │ │ ├── sreadhb.c │ │ ├── sreadrb.c │ │ ├── sreadtriple.c │ │ ├── ssnode_bmod.c │ │ ├── ssnode_dfs.c │ │ ├── ssp_blas2.c │ │ ├── ssp_blas3.c │ │ ├── superlu_enum_consts.h │ │ ├── superlu_timer.c │ │ ├── supermatrix.h │ │ ├── sutil.c │ │ ├── util.c │ │ ├── zcolumn_bmod.c │ │ ├── zcolumn_dfs.c │ │ ├── zcopy_to_ucol.c │ │ ├── zdiagonal.c │ │ ├── zgscon.c │ │ ├── zgsequ.c │ │ ├── zgsisx.c │ │ ├── zgsitrf.c │ │ ├── zgsrfs.c │ │ ├── zgssv.c │ │ ├── zgssvx.c │ │ ├── zgstrf.c │ │ ├── zgstrs.c │ │ ├── zlacon2.c │ │ ├── zlangs.c │ │ ├── zlaqgs.c │ │ ├── zldperm.c │ │ ├── zmemory.c │ │ ├── zmyblas2.c │ │ ├── zpanel_bmod.c │ │ ├── zpanel_dfs.c │ │ ├── zpivotL.c │ │ ├── zpivotgrowth.c │ │ ├── zpruneL.c │ │ ├── zreadhb.c │ │ ├── zreadrb.c │ │ ├── zreadtriple.c │ │ ├── zsnode_bmod.c │ │ ├── zsnode_dfs.c │ │ ├── zsp_blas2.c │ │ ├── zsp_blas3.c │ │ └── zutil.c │ │ └── linkage.h ├── tests │ ├── CMakeLists.txt │ ├── bench_load │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_CDT_2d │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_HLBFGS │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_RVC │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_convex_cell │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_expansion_nt │ │ ├── CGAL │ │ │ ├── CGAL_expansion_nt.h │ │ │ ├── CMakeLists.txt │ │ │ ├── README.txt │ │ │ ├── benchmark.cpp │ │ │ ├── include │ │ │ │ └── CGAL │ │ │ │ │ └── Number_types │ │ │ │ │ └── internal │ │ │ │ │ └── Exact_type_selector.h │ │ │ └── ocean_r.xyz │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_geofile │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_locks │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_logger │ │ ├── CMakeLists.txt │ │ └── main.cpp │ ├── test_mesh_syntaxic_sugar │ │ ├── CMakeLists.txt │ │ └── main.cpp │ └── test_nn_search │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ ├── nn_search_ANN.cpp │ │ ├── nn_search_ANN.h │ │ └── third_party │ │ └── ANN │ │ ├── ANN.cpp │ │ ├── ANN.h │ │ ├── ANNperf.h │ │ ├── ANNx.h │ │ ├── bd_fix_rad_search.cpp │ │ ├── bd_pr_search.cpp │ │ ├── bd_search.cpp │ │ ├── bd_tree.cpp │ │ ├── bd_tree.h │ │ ├── brute.cpp │ │ ├── kd_dump.cpp │ │ ├── kd_fix_rad_search.cpp │ │ ├── kd_fix_rad_search.h │ │ ├── kd_pr_search.cpp │ │ ├── kd_pr_search.h │ │ ├── kd_search.cpp │ │ ├── kd_search.h │ │ ├── kd_split.cpp │ │ ├── kd_split.h │ │ ├── kd_tree.cpp │ │ ├── kd_tree.h │ │ ├── kd_util.cpp │ │ ├── kd_util.h │ │ ├── perf.cpp │ │ ├── pr_queue.h │ │ └── pr_queue_k.h └── tutorial │ ├── 01_basics │ ├── hello_GLUP_app │ │ ├── CMakeLists.txt │ │ ├── FindGeogram.cmake │ │ ├── main.cpp │ │ └── makeit.sh │ └── hello_geogram │ │ ├── CMakeLists.txt │ │ ├── FindGeogram.cmake │ │ ├── main.cpp │ │ └── makeit.sh │ └── README.txt ├── tests ├── BNN_Search.robot ├── CDT_2d.robot ├── CDT_no_Delaunay_2d.robot ├── CMakeLists.txt ├── CNN_Search.robot ├── CSG.robot ├── CSGplus.robot ├── CVT.robot ├── CmdLine.robot ├── ConvexCell.robot ├── Delaunay.robot ├── DelaunaySequential.robot ├── Exploragram │ └── HexDom.robot.exploragram ├── FileConvert.robot ├── FileInput.robot ├── Geofile.robot ├── Intersect.robot ├── Logger.robot ├── NL.robot ├── OTM.robot ├── README.md ├── RVD.robot ├── RVD_cells.robot ├── Reconstruct.robot ├── Remesh.robot ├── SyntaxicSugar.robot ├── Tetrahedralize.robot ├── Vorpaline │ ├── PGP2d.robot.vorpaline │ ├── PGP3d.robot.vorpaline │ └── VolumetricCVT.robot.vorpaline ├── lib │ └── VorpatestLibrary.py └── robot.png └── tools ├── FileSaver.js ├── FileUtils.pm ├── Images ├── ko.png ├── ok.png └── robot.png ├── MakeMake.sh ├── clean_cmake.sh ├── cppcheck.sh ├── extract_psm.sh ├── fixdoc.pl ├── fixdoc_all.sh ├── gallery.sh ├── gen_all_emscripten_htmls.sh ├── gen_emscripten_html.sh ├── generate_reports.sh ├── generate_todo_list.pl ├── generate_todo_list_all.sh ├── head.html ├── header.txt ├── indent.pl ├── indent_all.sh ├── indent_with_emacs.sh ├── list_debian_packages.sh ├── make_geogram_dist.sh ├── make_package.pl.in ├── reformat_all_sources.sh ├── replace_copyright.sh ├── runpybot.bat.in ├── runpybot.sh.in ├── runride.bat.in ├── runride.sh.in ├── snapshot.sh ├── template_emscripten.html ├── testenv.bat.in ├── testenv.sh.in ├── uncrustify.cfg ├── unpack_artifacts.sh ├── valgrind.sh └── valgrind.supp /.github/workflows/doxygen.yml: -------------------------------------------------------------------------------- 1 | name: Doxygen 2 | 3 | on: 4 | workflow_dispatch 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - name: Checkout repository 12 | uses: actions/checkout@v4 13 | with: 14 | submodules: recursive 15 | 16 | - name: Checkout exploragram 17 | uses: actions/checkout@v4 18 | with: 19 | repository: BrunoLevy/exploragram 20 | path: src/lib/exploragram 21 | 22 | - name: Dependencies 23 | run: | 24 | sudo apt-get update 25 | sudo apt-get install \ 26 | xorg-dev \ 27 | doxygen 28 | 29 | - name: Configure 30 | run: | 31 | mkdir -p build 32 | cd build 33 | cmake .. -DCMAKE_BUILD_TYPE=Release 34 | 35 | - name: Build 36 | run: cd build; make doc-devkit-full 37 | 38 | - name: Deploy 39 | uses: JamesIves/github-pages-deploy-action@v4 40 | with: 41 | token: ${{ secrets.GITHUB_TOKEN }} 42 | branch: gh-pages 43 | folder: ./build/doc/devkit-full/html 44 | single-commit: true 45 | clean: true 46 | -------------------------------------------------------------------------------- /.github/workflows/draft-pdf.yml: -------------------------------------------------------------------------------- 1 | name: Draft PDF 2 | 3 | on: 4 | workflow_dispatch 5 | 6 | #on: 7 | # push: 8 | # paths: 9 | # - paper/** 10 | # - .github/workflows/draft-pdf.yml 11 | 12 | jobs: 13 | paper: 14 | runs-on: ubuntu-latest 15 | name: Paper Draft 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v4 19 | - name: Build draft PDF 20 | uses: openjournals/openjournals-draft-action@master 21 | with: 22 | journal: joss 23 | # This should be the path to the paper within your repo. 24 | paper-path: joss/paper.md 25 | - name: Upload 26 | uses: actions/upload-artifact@v4 27 | with: 28 | name: paper 29 | # This is the output path where Pandoc will write the compiled 30 | # PDF. Note, this should be the same directory as the input 31 | # paper.md 32 | path: joss/paper.pdf 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | 34 | # Build folders 35 | build/ 36 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/lib/geogram/third_party/amgcl"] 2 | path = src/lib/geogram/third_party/amgcl 3 | url = https://github.com/ddemidov/amgcl.git 4 | [submodule "src/lib/third_party/glfw"] 5 | path = src/lib/third_party/glfw 6 | url = https://github.com/glfw/glfw.git 7 | [submodule "src/lib/geogram_gfx/third_party/imgui"] 8 | path = src/lib/geogram_gfx/third_party/imgui 9 | url = https://github.com/ocornut/imgui.git 10 | branch = docking 11 | [submodule "src/lib/geogram/third_party/libMeshb"] 12 | path = src/lib/geogram/third_party/libMeshb 13 | url = https://github.com/LoicMarechal/libMeshb.git 14 | [submodule "src/lib/geogram/third_party/rply"] 15 | path = src/lib/geogram/third_party/rply 16 | url = https://github.com/diegonehab/rply.git 17 | -------------------------------------------------------------------------------- /cmake/options/CMakeOptions.txt.Gargantua: -------------------------------------------------------------------------------- 1 | # Example of CMakeOptions.txt file 2 | # Copy to CMakeOptions.txt, then edit the options: 3 | # 4 | # Setting GARGANTUA mode (64-bit indices), and 5 | # deactivating optional content that is not compatible 6 | # with 64-bit indices. 7 | 8 | set(GEOGRAM_WITH_GARGANTUA ON) 9 | set(GEOGRAM_WITH_TETGEN OFF) 10 | set(GEOGRAM_WITH_TRIANGLE OFF) 11 | set(GEOGRAM_WITH_HLBFGS OFF) 12 | set(GEOGRAM_WITH_GRAPHICS OFF) 13 | set(GEOGRAM_WITH_EXPLORAGRAM OFF) 14 | set(GEOGRAM_WITH_LEGACY_NUMERICS OFF) 15 | set(GEOGRAM_WITH_LUA OFF) 16 | set(GEOGRAM_LIB_ONLY OFF) 17 | 18 | 19 | -------------------------------------------------------------------------------- /cmake/options/CMakeOptions.txt.Minimal: -------------------------------------------------------------------------------- 1 | # Deactivating most optional content 2 | # Generating executables 3 | 4 | set(GEOGRAM_WITH_GARGANTUA OFF) 5 | set(GEOGRAM_WITH_TETGEN OFF) 6 | set(GEOGRAM_WITH_TRIANGLE OFF) 7 | set(GEOGRAM_WITH_HLBFGS OFF) 8 | set(GEOGRAM_WITH_GRAPHICS OFF) 9 | set(GEOGRAM_WITH_EXPLORAGRAM OFF) 10 | set(GEOGRAM_WITH_LEGACY_NUMERICS OFF) 11 | set(GEOGRAM_WITH_LUA OFF) 12 | set(GEOGRAM_LIB_ONLY OFF) 13 | 14 | # Uncomment to activate AVX2 15 | #set( 16 | # CMAKE_CXX_FLAGS 17 | # "${CMAKE_CXX_FLAGS} -mavx2 -mfma -frounding-math -ffp-contract=off" 18 | #) 19 | 20 | -------------------------------------------------------------------------------- /cmake/options/CMakeOptions.txt.Standard: -------------------------------------------------------------------------------- 1 | # Options for standard configuration 2 | # Used by test matrix 3 | # (empty file, keep default options) 4 | -------------------------------------------------------------------------------- /cmake/options/CMakeOptions.txt.graphite: -------------------------------------------------------------------------------- 1 | # Options for compiling Geogram for Graphite 2 | # Rename as CMakeOptions.txt 3 | 4 | if(WIN32) 5 | set(VORPALINE_PLATFORM Win-vs-dynamic-generic) 6 | elseif(APPLE) 7 | set(VORPALINE_PLATFORM Darwin-clang-dynamic) 8 | elseif(UNIX) 9 | set(VORPALINE_PLATFORM Linux64-gcc-dynamic) 10 | endif() 11 | 12 | # Only geogram, geogram_gfx and GLFW will be built 13 | # (skips generation of geogram demos and programs) 14 | 15 | set(GEOGRAM_LIB_ONLY ON) 16 | 17 | -------------------------------------------------------------------------------- /cmake/platforms/Android-generic/config.cmake: -------------------------------------------------------------------------------- 1 | # Reset the warning level for third parties 2 | function(vor_reset_warning_level) 3 | endfunction() 4 | 5 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin-aarch64-clang-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_BUILD_DYNAMIC true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Darwin-clang.cmake) 3 | 4 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin-aarch64-clang/config.cmake: -------------------------------------------------------------------------------- 1 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Darwin-clang.cmake) 2 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin-clang-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | set(VORPALINE_BUILD_DYNAMIC true) 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Darwin-clang.cmake) 4 | 5 | add_flags(CMAKE_CXX_FLAGS -m64) 6 | add_flags(CMAKE_C_FLAGS -m64) 7 | 8 | # Enable SSE3 instruction set on Intel architecture 9 | if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") 10 | add_flags(CMAKE_CXX_FLAGS -msse3) 11 | add_flags(CMAKE_C_FLAGS -msse3) 12 | endif() 13 | 14 | 15 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin-clang-dynamic/setvars.sh: -------------------------------------------------------------------------------- 1 | export CC=clang 2 | export CXX=clang++ 3 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin-clang/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Darwin-clang.cmake) 3 | 4 | add_flags(CMAKE_CXX_FLAGS -m64) 5 | add_flags(CMAKE_C_FLAGS -m64) 6 | 7 | # Enable SSE3 instruction set on Intel architecture 8 | if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") 9 | add_flags(CMAKE_CXX_FLAGS -msse3) 10 | add_flags(CMAKE_C_FLAGS -msse3) 11 | endif() 12 | 13 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin-clang/setvars.sh: -------------------------------------------------------------------------------- 1 | export CC=clang 2 | export CXX=clang++ 3 | -------------------------------------------------------------------------------- /cmake/platforms/Darwin.cmake: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------- 2 | # Flags common to all Darwin based platforms 3 | #------------------------------------------------------------------- 4 | 5 | # Shell script extension 6 | set(SHELL_SUFFIX "sh") 7 | 8 | # This flag MUST be added to solve a bug related to shared lib dynamic loading 9 | # (std::type_infos representing the same template type do not compare equal, 10 | # introducing subtle bugs) 11 | # IMPORTANT: DO NOT ADD THIS FLAG WITH STATIC LINKING 12 | #add_flags(CMAKE_EXE_LINKER_FLAGS "-Wl,-E") 13 | 14 | # Forbid undefined symbols at link time (shared libraries and executables) 15 | # Commented-out, deprecated since MacOS-13 16 | #add_flags(CMAKE_SHARED_LINKER_FLAGS "-Wl,-undefined,error") 17 | #add_flags(CMAKE_EXE_LINKER_FLAGS "-Wl,-undefined,error") 18 | 19 | 20 | # Link with the loader library 21 | list(APPEND SYSLIBS dl) 22 | -------------------------------------------------------------------------------- /cmake/platforms/Emscripten-clang/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 FALSE) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Emscripten-clang.cmake) 3 | 4 | if(VORPALINE_ARCH_64) 5 | add_flags(CMAKE_CXX_FLAGS -m64) 6 | add_flags(CMAKE_C_FLAGS -m64) 7 | endif() 8 | -------------------------------------------------------------------------------- /cmake/platforms/Emscripten-clang/setvars.sh: -------------------------------------------------------------------------------- 1 | export CC=emcc 2 | export CXX=em++ 3 | -------------------------------------------------------------------------------- /cmake/platforms/Linux.cmake: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------- 2 | # Flags common to all Linux based platforms 3 | #------------------------------------------------------------------- 4 | 5 | # Shell script extension 6 | set(SHELL_SUFFIX "sh") 7 | 8 | # This flag MUST be added to solve a bug related to shared lib dynamic loading 9 | # (std::type_infos representing the same template type do not compare equal, 10 | # introducing subtle bugs) 11 | # IMPORTANT: DO NOT ADD THIS FLAG WITH STATIC LINKING 12 | #add_flags(CMAKE_EXE_LINKER_FLAGS "-Wl,-E") 13 | 14 | # Forbid undefined symbols at link time (shared libraries and executables) 15 | add_flags(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") 16 | add_flags(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-undefined") 17 | 18 | # Link with the loader library 19 | list(APPEND SYSLIBS dl) 20 | -------------------------------------------------------------------------------- /cmake/platforms/Linux32-gcc-Raspberry/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_BUILD_DYNAMIC true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-gcc.cmake) 3 | 4 | set(ARM_FLAGS -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -mlittle-endian -munaligned-access) 5 | 6 | add_flags(CMAKE_CXX_FLAGS -DGEO_OS_RASPBERRY ${ARM_FLAGS}) 7 | add_flags(CMAKE_C_FLAGS -DGEO_OS_RASPBERRY ${ARM_FLAGS}) 8 | 9 | -------------------------------------------------------------------------------- /cmake/platforms/Linux32-gcc-Raspberry/setvars.sh: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cmake/platforms/Linux32-gcc/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_32 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-gcc.cmake) 3 | add_flags(CMAKE_CXX_FLAGS -m32) 4 | add_flags(CMAKE_C_FLAGS -m32) 5 | 6 | # Configure FPU to use SSE instructions (IEEE rounding semantics) 7 | # In the default 387 mode, rounding is unpredictable 8 | add_definitions(-mfpmath=sse) 9 | 10 | -------------------------------------------------------------------------------- /cmake/platforms/Linux32-gcc/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux32-gcc/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/Linux64-clang-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | set(VORPALINE_BUILD_DYNAMIC true) 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-clang.cmake) 4 | add_flags(CMAKE_CXX_FLAGS -m64) 5 | add_flags(CMAKE_C_FLAGS -m64) 6 | 7 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-clang-dynamic/setvars.sh: -------------------------------------------------------------------------------- 1 | export CC=clang 2 | export CXX=clang++ 3 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-clang/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-clang.cmake) 3 | add_flags(CMAKE_CXX_FLAGS -m64) 4 | add_flags(CMAKE_C_FLAGS -m64) 5 | 6 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-clang/setvars.sh: -------------------------------------------------------------------------------- 1 | export CC=clang 2 | export CXX=clang++ 3 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-gcc-aarch64/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-gcc-aarch64.cmake) 3 | add_flags(CMAKE_CXX_FLAGS -DGEO_OS_LINUX_AARCH64) 4 | add_flags(CMAKE_C_FLAGS -DGEO_OS_LINUX_AARCH64) 5 | 6 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-gcc-aarch64/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux64-gcc-aarch64/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/Linux64-gcc-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | set(VORPALINE_BUILD_DYNAMIC true) 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-gcc.cmake) 4 | add_flags(CMAKE_CXX_FLAGS -m64) 5 | add_flags(CMAKE_C_FLAGS -m64) 6 | 7 | 8 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-gcc-dynamic/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux64-gcc-dynamic/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/Linux64-gcc/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-gcc.cmake) 3 | add_flags(CMAKE_CXX_FLAGS -m64) 4 | add_flags(CMAKE_C_FLAGS -m64) 5 | 6 | 7 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-gcc/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux64-gcc/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/Linux64-icc-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | set(VORPALINE_BUILD_DYNAMIC true) 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-icc.cmake) 4 | add_flags(CMAKE_CXX_FLAGS -m64) 5 | add_flags(CMAKE_C_FLAGS -m64) 6 | 7 | 8 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-icc-dynamic/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux64-icc-dynamic/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/Linux64-icc/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-icc.cmake) 3 | add_flags(CMAKE_CXX_FLAGS -m64) 4 | add_flags(CMAKE_C_FLAGS -m64) 5 | 6 | 7 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-icc/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux64-icc/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/Linux64-mic-icc/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-mic-icc.cmake) 3 | add_flags(CMAKE_CXX_FLAGS -mmic) 4 | add_flags(CMAKE_C_FLAGS -mmic) 5 | set(VORPALINE_WITH_GRAPHICS FALSE) 6 | 7 | 8 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-mic-icc/setvars.sh: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-nonx86-clang-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | set(VORPALINE_BUILD_DYNAMIC true) 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-clang.cmake) 4 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-nonx86-clang-dynamic/setvars.sh: -------------------------------------------------------------------------------- 1 | export CC=clang 2 | export CXX=clang++ 3 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-nonx86-gcc-dynamic/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_ARCH_64 true) 2 | set(VORPALINE_BUILD_DYNAMIC true) 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Linux-gcc.cmake) 4 | -------------------------------------------------------------------------------- /cmake/platforms/Linux64-nonx86-gcc-dynamic/setvars.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/cmake/platforms/Linux64-nonx86-gcc-dynamic/setvars.sh -------------------------------------------------------------------------------- /cmake/platforms/MinGW-x86_64-w64/config.cmake: -------------------------------------------------------------------------------- 1 | set(VORPALINE_WITH_GRAPHICS FALSE) 2 | 3 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/MinGW-x86_64-w64.cmake) 4 | -------------------------------------------------------------------------------- /cmake/platforms/MinGW-x86_64-w64/setvars.sh: -------------------------------------------------------------------------------- 1 | export AR=x86_64-w64-mingw32-ar 2 | export CC=x86_64-w64-mingw32-gcc 3 | export CXX=x86_64-w64-mingw32-g++ 4 | -------------------------------------------------------------------------------- /cmake/platforms/Win-vs-dynamic-generic/config.cmake: -------------------------------------------------------------------------------- 1 | if(CMAKE_CL_64) 2 | set(VORPALINE_ARCH_64 true) 3 | message(STATUS "Configuring 64 bits build") 4 | else() 5 | set(VORPALINE_ARCH_32 true) 6 | message(STATUS "Configuring 32 bits build") 7 | endif() 8 | set(VORPALINE_BUILD_DYNAMIC true) 9 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Windows-vs.cmake) 10 | 11 | 12 | -------------------------------------------------------------------------------- /cmake/platforms/Win-vs-generic/config.cmake: -------------------------------------------------------------------------------- 1 | if(CMAKE_CL_64) 2 | set(VORPALINE_ARCH_64 true) 3 | message(STATUS "Configuring 64 bits build") 4 | else() 5 | set(VORPALINE_ARCH_32 true) 6 | message(STATUS "Configuring 32 bits build") 7 | endif() 8 | 9 | include(${GEOGRAM_SOURCE_DIR}/cmake/platforms/Windows-vs.cmake) 10 | -------------------------------------------------------------------------------- /cmake/platforms/Windows.cmake: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------- 2 | # Flags common to all Windows based platforms 3 | #------------------------------------------------------------------- 4 | 5 | # Batch file extension 6 | set(SHELL_SUFFIX "bat") 7 | 8 | -------------------------------------------------------------------------------- /doc/VERSION.txt.in: -------------------------------------------------------------------------------- 1 | \\V (O |R |P /A |L |I |N |E 2 | (C) Bruno Levy, INRIA - ALICE, 2012-@YEAR@ 3 | 4 | Vorpaline Version: @VORPALINE_VERSION@ 5 | Build Date: @VORPALINE_BUILD_DATE@ 6 | Build Number: @VORPALINE_BUILD_NUMBER@ 7 | SVN Revision: @VORPALINE_SVN_REVISION@ 8 | 9 | -------------------------------------------------------------------------------- /joss/geogram.bib: -------------------------------------------------------------------------------- 1 | @article{ray2018, 2 | author = {Nicolas Ray and Dmitry Sokolov and Sylvain Lefebvre and Bruno Lévy}, 3 | title = {Meshless Voronoi on the GPU}, 4 | journal = {ACM Transactions on Graphics}, 5 | year = {2018}, 6 | volume = {37}, 7 | number = {6}, 8 | pages = {1-12}, 9 | doi = {10.1145/3272127.3275092}, 10 | hal_id = {hal-01927559} 11 | } 12 | -------------------------------------------------------------------------------- /src/bin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | add_subdirectory(vorpastat) 3 | add_subdirectory(vorpacomp) 4 | add_subdirectory(geodump) 5 | 6 | if(GEOGRAM_WITH_GRAPHICS) 7 | add_subdirectory(vorpaview) 8 | add_subdirectory(geobox) 9 | add_subdirectory(geoCSG) 10 | if(GEOGRAM_WITH_LUA) 11 | add_subdirectory(geocod) 12 | endif() 13 | add_subdirectory(geoshade) 14 | endif() 15 | 16 | add_subdirectory(vorpalite) 17 | 18 | # if(GEOGRAM_WITH_VORPALINE) 19 | # add_subdirectory(vorpaline) 20 | # endif() 21 | 22 | if(GEOGRAM_WITH_FPG) 23 | add_subdirectory(fpg) 24 | add_subdirectory(pck) 25 | endif() 26 | -------------------------------------------------------------------------------- /src/bin/fpg/CGALmini/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains two includes from CGAL, included here to 2 | make it easy to compile FPG under various systems. They are completely 3 | standalone (it is not necassary to install CGAL, neither BOOST 4 | or other CGAL dependancies). 5 | 6 | B. Levy, Fri Mar 21 23:10:34 CET 2014 7 | 8 | ================================================================= 9 | 10 | FPU.h: 11 | controls floating point unit operations, rounding modes etc... 12 | 13 | Static_filter_error.h: 14 | the number_type class that computes error bounds for predicate filters. 15 | 16 | Both files are licensed under the LGPL v3 (included here) 17 | 18 | basic.h: 19 | Replacements for the CGAL macros and functions used by FPG 20 | -------------------------------------------------------------------------------- /src/bin/fpg/CGALmini/basic.h: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Replacement of some functions and macros needed by CGAL 4 | * B. Levy, Fri Mar 21 23:10:34 CET 2014 5 | */ 6 | 7 | #ifndef CGAL_BASIC 8 | #define CGAL_BASIC 9 | #include 10 | #include 11 | #include 12 | 13 | inline void CGAL_error_msg(const std::string& msg) { 14 | std::cerr << "CGAL error:" << msg << std::endl; 15 | } 16 | 17 | inline void CGAL_warning_msg(bool cond, const std::string& msg) { 18 | if(!cond) 19 | { 20 | std::cerr << "CGAL warning:" << msg << std::endl; 21 | } 22 | } 23 | 24 | inline void CGAL_warning_msg(const std::string& msg) { 25 | std::cerr << "CGAL warning:" << msg << std::endl; 26 | } 27 | 28 | inline void CGAL_error() 29 | { 30 | std::cerr << "CGAL error" << std::endl; 31 | } 32 | 33 | #define CGAL_expensive_assertion(x) assert(x) 34 | 35 | #define CGAL_assertion(x) assert(x) 36 | 37 | #define CGAL_BEGIN_NAMESPACE namespace CGAL { 38 | #define CGAL_END_NAMESPACE } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/bin/fpg/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | vor_reset_warning_level() 2 | set(APP_NAME mcc) 3 | aux_source_directories(SOURCES "" .) 4 | include_directories(.) 5 | vor_add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram) 7 | 8 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 9 | -------------------------------------------------------------------------------- /src/bin/fpg/Declarator.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | Type* 5 | IdentifierDeclarator::declare( Type *base_type, std::string &id ) const { 6 | id = this->id; 7 | 8 | return base_type; 9 | } 10 | 11 | Type* 12 | FunctionDeclarator::declare( Type *base_type, std::string &id ) const { 13 | // decl should be some form of IdentifierDeclarator. type not needed. 14 | decl->declare( nullptr, id ); 15 | 16 | // prepare function type 17 | FunctionType *fun = new FunctionType( id, base_type ); 18 | 19 | if( params ) { 20 | for( ParameterDeclList::iterator it = params->begin(); it != params->end(); ++it ) { 21 | Type *type = (*it)->first; 22 | Declarator *declarator = (*it)->second; 23 | std::string name; 24 | // construct type 25 | type = declarator->declare( type, name ); 26 | fun->addParameter( name, type ); 27 | } 28 | } 29 | return fun; 30 | } 31 | -------------------------------------------------------------------------------- /src/bin/fpg/FPG/Collect_function_calls.h: -------------------------------------------------------------------------------- 1 | #ifndef COLLECT_FUNCTION_CALLS_H 2 | #define COLLECT_FUNCTION_CALLS_H 3 | 4 | #include 5 | #include 6 | 7 | struct Collect_function_calls : public Visitor { 8 | virtual void visit( AST::LiteralExpression* ); 9 | virtual void visit( AST::IdentifierExpression* ); 10 | virtual void visit( AST::UnaryExpression* ); 11 | virtual void visit( AST::BinaryExpression* ); 12 | virtual void visit( AST::ConditionalExpression* ); 13 | virtual void visit( AST::AssignmentExpression* ); 14 | virtual void visit( AST::FunctionCall* ); 15 | virtual void visit( AST::EmptyStatement* ); 16 | virtual void visit( AST::ExpressionStatement* ); 17 | virtual void visit( AST::ConditionalStatement* ); 18 | virtual void visit( AST::Return* ); 19 | virtual void visit( AST::StatementList* ); 20 | virtual void visit( AST::VariableDeclaration* ); 21 | virtual void visit( AST::CompoundStatement* ); 22 | virtual void visit( AST::FunctionDefinition* ); 23 | virtual void visit( AST::TranslationUnit* ); 24 | 25 | std::vector< AST::FunctionCall* > result; 26 | }; 27 | 28 | #endif -------------------------------------------------------------------------------- /src/bin/fpg/FPG/Error_bound_value.h: -------------------------------------------------------------------------------- 1 | #ifndef ERROR_BOUND_VALUE_H_ 2 | #define ERROR_BOUND_VALUE_H_ 3 | 4 | #include 5 | 6 | struct Error_bound_value : public Abstract_value { 7 | Error_bound_value(); 8 | 9 | virtual Abstract_value *get_initial_value( Variable *var ); 10 | 11 | Error_bound_value* downcast( Abstract_value* value ); 12 | virtual Error_bound_value* add( Abstract_value* other ); 13 | virtual Error_bound_value* sub( Abstract_value* other ); 14 | virtual Error_bound_value* div( Abstract_value* other ); 15 | virtual Error_bound_value* mul( Abstract_value* other ); 16 | virtual Error_bound_value* sqrt(); 17 | virtual Error_bound_value* join( Abstract_value* other ); 18 | virtual Error_bound_value* clone(); 19 | virtual bool is_fresh(); 20 | virtual std::ostream& dump( std::ostream& out ); 21 | 22 | unsigned int index; 23 | }; 24 | 25 | 26 | #endif /*ERROR_BOUND_VALUE_H_*/ 27 | -------------------------------------------------------------------------------- /src/bin/fpg/FPG/Location.h: -------------------------------------------------------------------------------- 1 | #ifndef LOCATION_H 2 | #define LOCATION_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | /* describes where "something " is, i.e., 9 | in which file and at which point in a file */ 10 | 11 | struct Location { 12 | Location() : filename("stdin") 13 | { reset(); } 14 | 15 | std::string toString() const; 16 | void reset() { line = 1; column = 1; } 17 | 18 | std::string filename; 19 | int line; 20 | int column; 21 | }; 22 | 23 | inline std::ostream& 24 | operator<<(std::ostream &o, Location& l ) { 25 | o << "in file " << l.filename << " at line " << l.line << ":" << std::endl; 26 | return o; 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/bin/fpg/FPG/MSG.h: -------------------------------------------------------------------------------- 1 | #ifndef MSG_H 2 | #define MSG_H 3 | 4 | #include 5 | 6 | #ifdef DEBUG 7 | #define MSG(v) {std::cout <<__PRETTY_FUNCTION__ <<":" << v << std::endl; } 8 | #define TRACE() {std::cerr <<__PRETTY_FUNCTION__ << std::endl; } 9 | #else 10 | #define MSG(v) {} 11 | #define TRACE() {} 12 | #endif 13 | 14 | #define VERBOSE_ERROR(v) { std::cerr << "!! " << __FILE__ << ":" << __LINE__ << " (" << __PRETTY_FUNCTION__ << ") " << v << std::endl; } 15 | #define ERROR(v) VERBOSE_ERROR(v) 16 | #define VERBOSE_FAIL(v) { ERROR(v); *((int*)0) = 4711; } 17 | #define FAIL(v) { ERROR(v); exit(-1); } 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/bin/fpg/FPG/io.h: -------------------------------------------------------------------------------- 1 | #ifndef FPG_IO_H 2 | #define FPG_IO_H 3 | 4 | #include 5 | 6 | namespace AST { 7 | struct TranslationUnit; 8 | } 9 | 10 | 11 | namespace Flags { 12 | extern bool prettyprint; // pretty print the (desugared) program 13 | extern bool dumpAST; 14 | extern bool xstdin; 15 | } 16 | 17 | /* parsing stuff */ 18 | extern int lineno; 19 | extern AST::TranslationUnit *translation_unit; 20 | 21 | void process_cmdline_args( int argc, char **argv ); 22 | bool open_and_parse( std::string filename ); 23 | void reset_parser(); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/bin/fpg/FPG/test.h: -------------------------------------------------------------------------------- 1 | #ifndef FPG_TEST_H 2 | #define FPG_TEST_H 3 | 4 | extern void test_main(); 5 | 6 | #endif -------------------------------------------------------------------------------- /src/bin/fpg/Location.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | std::string Location::toString() const 4 | { 5 | std::stringstream loc; 6 | if(line) 7 | if(filename!="") 8 | loc< 30 | 31 | void register_embedded_lua_files(void); 32 | 33 | void register_embedded_lua_files() { 34 | EOF 35 | 36 | for header in $headers 37 | do 38 | echo " register_embedded_lua_file(\"$header\"," 39 | cat $header | sed -e 's|\\n|\\\\n|' \ 40 | -e 's|"|\\\"|g' \ 41 | -e 's|^| \"|' \ 42 | -e 's| *$| \\n\"|' 43 | echo " );" 44 | echo 45 | done 46 | 47 | echo "}" 48 | -------------------------------------------------------------------------------- /src/bin/geocod/lua/examples/flake.lua: -------------------------------------------------------------------------------- 1 | require("turtle") 2 | 3 | function VonKoch(level) 4 | if level==1 then 5 | fd(1) 6 | else 7 | VonKoch(level-1) 8 | tl(60) 9 | VonKoch(level-1) 10 | tr(120) 11 | VonKoch(level-1) 12 | tl(60) 13 | VonKoch(level-1) 14 | end 15 | end 16 | 17 | function Flake(level) 18 | pd() 19 | VonKoch(level) 20 | tr(120) 21 | VonKoch(level) 22 | tr(120) 23 | VonKoch(level) 24 | pu() 25 | end 26 | 27 | function GLUP.draw_scene() 28 | home() 29 | fd(40) 30 | tl(90) 31 | fd(40) 32 | tr(90) 33 | pwidth(0.1) 34 | tr(90) 35 | GLUP.Enable(GLUP.VERTEX_COLORS) 36 | GLUP.Disable(GLUP.LIGHTING) 37 | pcol("gray") 38 | Flake(5) 39 | end 40 | -------------------------------------------------------------------------------- /src/bin/geocod/lua/examples/sierpinski.lua: -------------------------------------------------------------------------------- 1 | require("turtle") 2 | 3 | 4 | function Sierpinski(a, level) 5 | if level==0 then 6 | pd() 7 | for i=1,3,1 do 8 | fd(a) 9 | tl(120) 10 | end 11 | pu() 12 | else 13 | Sierpinski(a/2, level - 1) 14 | pu() 15 | fd(a/2) 16 | pd() 17 | Sierpinski(a/2, level - 1) 18 | pu() 19 | tl(120) 20 | fd(a/2) 21 | tr(120) 22 | pd() 23 | Sierpinski(a/2, level - 1) 24 | pu() 25 | -- We should return home! 26 | pd() 27 | tl(60) 28 | bk(a/2) 29 | tr(60) 30 | pu() 31 | end 32 | end 33 | 34 | 35 | function GLUP.draw_scene() 36 | home() 37 | pwidth(0.2) 38 | GLUP.Enable(GLUP.VERTEX_COLORS) 39 | GLUP.Disable(GLUP.LIGHTING) 40 | pcol("gray") 41 | Sierpinski(100,5) 42 | end 43 | -------------------------------------------------------------------------------- /src/bin/geocod/lua/examples/sponge.lua: -------------------------------------------------------------------------------- 1 | require("pixel") 2 | 3 | N=3*3 4 | 5 | function sponge(x,y,z,d) 6 | if d < 1 then 7 | pix3d(x,y,z) 8 | else 9 | sponge(x,y,z,d/3) 10 | sponge(x+d,y,z,d/3) 11 | sponge(x+2*d,y,z,d/3) 12 | sponge(x,y+d,z,d/3) 13 | sponge(x+2*d,y+d,z,d/3) 14 | sponge(x,y+2*d,z,d/3) 15 | sponge(x+d,y+2*d,z,d/3) 16 | sponge(x+2*d,y+2*d,z,d/3) 17 | sponge(x,y,z+d,d/3) 18 | sponge(x+2*d,y,z+d,d/3) 19 | sponge(x,y+2*d,z+d,d/3) 20 | sponge(x+2*d,y+2*d,z+d,d/3) 21 | sponge(x,y,z+2*d,d/3) 22 | sponge(x+d,y,z+2*d,d/3) 23 | sponge(x+2*d,y,z+2*d,d/3) 24 | sponge(x,y+d,z+2*d,d/3) 25 | sponge(x+2*d,y+d,z+2*d,d/3) 26 | sponge(x,y+2*d,z+2*d,d/3) 27 | sponge(x+d,y+2*d,z+2*d,d/3) 28 | sponge(x+2*d,y+2*d,z+2*d,d/3) 29 | end 30 | end 31 | 32 | function GLUP.init_graphics() 33 | GLUP.SetRegionOfInterest(1,1,1,N*3,N*3,N*3) 34 | end 35 | 36 | function GLUP.draw_scene() 37 | GLUP.Enable(GLUP.DRAW_MESH) 38 | pixBegin() 39 | col("yellow") 40 | sponge(1,1,1,N) 41 | pixEnd() 42 | end 43 | -------------------------------------------------------------------------------- /src/bin/geocod/lua/lib/preamble.lua: -------------------------------------------------------------------------------- 1 | -- preamble.lua 2 | -- FR bibliotheque interne, incluse par defaut 3 | -- FR ce fichier est toujours execute avant votre programme 4 | -- EN internal library, included by default 5 | -- EN this file is always executed before your program 6 | 7 | -- FR une fonction qui ne fait rien 8 | -- EN a function that does nothing 9 | function NOP() 10 | end 11 | 12 | -- EN by-default definition for functions called by GEOCOD 13 | -- FR definition par defaut des fonctions appelees par GEOCOD 14 | GLUP.draw_scene = NOP 15 | imgui.draw_application_menus = NOP 16 | imgui.draw_object_properties = NOP 17 | imgui.on_key_pressed = NOP 18 | imgui.on_key_released = NOP 19 | 20 | 21 | function GLUP.init_graphics() 22 | GLUP.SetRegionOfInterest(0,0,0,1,1,1) 23 | end 24 | 25 | -- Commented-out (I want to keep user's view when 26 | -- F5 is pushed). 27 | -- GLUP.ResetViewer() 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/bin/geocod/lua/templates/pixel_program.lua: -------------------------------------------------------------------------------- 1 | require("pixel") 2 | 3 | function GLUP.init_graphics() 4 | GLUP.SetRegionOfInterest(1,1,1,11,11,1) 5 | end 6 | 7 | function GLUP.draw_scene() 8 | 9 | GLUP.Enable(GLUP.DRAW_MESH) 10 | GLUP.SetCellsShrink(0.1) 11 | pixGrid() 12 | 13 | pixBegin() 14 | col("blue") 15 | pix(1,1) 16 | pixEnd() 17 | end -------------------------------------------------------------------------------- /src/bin/geocod/lua/templates/turtle_program.lua: -------------------------------------------------------------------------------- 1 | require("turtle") 2 | 3 | function GLUP.draw_scene() 4 | home() 5 | pcol("black") 6 | pd() 7 | fd(100) 8 | pu() 9 | end -------------------------------------------------------------------------------- /src/bin/geodump/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME geodump) 2 | aux_source_directories(SOURCES "" .) 3 | vor_add_executable(${APP_NAME} ${SOURCES}) 4 | target_link_libraries(${APP_NAME} geogram) 5 | install_runtime_targets(${APP_NAME}) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 8 | -------------------------------------------------------------------------------- /src/bin/geoshade/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geoshade) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | aux_source_directories(SOURCES "glsl" glsl) 6 | add_executable(${APP_NAME} ${SOURCES}) 7 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 8 | install_runtime_targets(${APP_NAME}) 9 | 10 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 11 | -------------------------------------------------------------------------------- /src/bin/pck/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME pck) 2 | aux_source_directories(SOURCES "" .) 3 | vor_add_executable(${APP_NAME} ${SOURCES}) 4 | target_link_libraries(${APP_NAME} geogram) 5 | install_runtime_targets(${APP_NAME}) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 8 | -------------------------------------------------------------------------------- /src/bin/pck/interpreter.h: -------------------------------------------------------------------------------- 1 | #ifndef H__PCK__INTERPRETER__H 2 | #define H__PCK__INTERPRETER__H 3 | 4 | #include 5 | 6 | struct lua_State; 7 | 8 | namespace GEO { 9 | 10 | class Expr; 11 | 12 | bool lua_isexpr(lua_State* L, int index); 13 | void lua_pushexpr(lua_State* L, Expr* expr); 14 | Expr* lua_toexpr(lua_State* L, int index); 15 | 16 | class Interpreter { 17 | public: 18 | Interpreter(); 19 | ~Interpreter(); 20 | void run_file(const std::string& filename); 21 | lua_State* lua_state() { return lua_state_; } 22 | static Interpreter* instance() { return instance_; } 23 | private: 24 | lua_State* lua_state_; 25 | static Interpreter* instance_; 26 | }; 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/bin/vorpacomp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME vorpacomp) 2 | aux_source_directories(SOURCES "" .) 3 | vor_add_executable(${APP_NAME} ${SOURCES}) 4 | target_link_libraries(${APP_NAME} geogram) 5 | 6 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 7 | -------------------------------------------------------------------------------- /src/bin/vorpalite/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME vorpalite) 2 | aux_source_directories(SOURCES "" .) 3 | vor_add_executable(${APP_NAME} ${SOURCES}) 4 | target_link_libraries(${APP_NAME} geogram) 5 | 6 | install_runtime_targets(${APP_NAME}) 7 | 8 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 9 | -------------------------------------------------------------------------------- /src/bin/vorpastat/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME vorpastat) 2 | aux_source_directories(SOURCES "" .) 3 | vor_add_executable(${APP_NAME} ${SOURCES}) 4 | target_link_libraries(${APP_NAME} geogram) 5 | 6 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 7 | -------------------------------------------------------------------------------- /src/bin/vorpaview/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME vorpaview) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Programs") 10 | -------------------------------------------------------------------------------- /src/examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | add_subdirectory(geogram) 3 | 4 | if(GEOGRAM_WITH_GRAPHICS) 5 | add_subdirectory(graphics) 6 | endif() 7 | 8 | if(GEOGRAM_WITH_EXPLORAGRAM) 9 | add_subdirectory(exploragram) 10 | endif() 11 | 12 | #if(GEOGRAM_WITH_VORPALINE) 13 | # add_subdirectory(vorpaline) 14 | #endif() 15 | -------------------------------------------------------------------------------- /src/examples/contrib/topopt/README.txt: -------------------------------------------------------------------------------- 1 | Topological Optimization, by Jeremie Dumas. 2 | -------------------------------------------------------------------------------- /src/examples/contrib/topopt/layout.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Layout { 4 | inline int to_index(int x, int y, int nx, int ny) { return y * nx + x; } 5 | 6 | template 7 | int to_index(vec2_t v, vec2_u s) { return v[1] * s[0] + v[0]; } 8 | 9 | template 10 | vec2_t to_grid(int id, int nx, int ny) { return vec2_t(id % nx, id / nx); } 11 | 12 | template 13 | vec2_t to_grid(int id, vec2_t dims) { return vec2_t(id % dims[0], id / dims[0]); } 14 | 15 | template 16 | bool is_valid(int x, int y, vec2_t dims) { return (x >= 0 && y >= 0 && x < dims[0] && y < dims[1]); } 17 | 18 | template 19 | bool is_valid(int id, vec2_t dims) { return is_valid(id % dims[0], id / dims[0], dims); } 20 | } 21 | -------------------------------------------------------------------------------- /src/examples/contrib/topopt/mesh_primitives.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | GEO::index_t create_cylinder_3d(double base, double top, double height, int slices, GEO::Mesh &M); 6 | 7 | GEO::index_t create_arrow_3d(double base, double top, double h1, double h2, int slices, GEO::Mesh &M); 8 | 9 | GEO::index_t create_arrow_2d(double base, double top, double h1, double h2, GEO::Mesh &M); 10 | -------------------------------------------------------------------------------- /src/examples/exploragram/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(hexdom_pipeline) 2 | add_subdirectory(compute_OTM) 3 | -------------------------------------------------------------------------------- /src/examples/exploragram/compute_OTM/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME compute_OTM) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | 6 | if(GEOGRAM_WITH_VORPALINE) 7 | add_definitions(-DGEOGRAM_WITH_VORPALINE) 8 | target_link_libraries(${APP_NAME} exploragram geogram vorpalib) 9 | else() 10 | target_link_libraries(${APP_NAME} exploragram geogram) 11 | endif() 12 | 13 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 14 | -------------------------------------------------------------------------------- /src/examples/exploragram/hexdom_pipeline/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME hexdom_pipeline) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} exploragram geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(compute_delaunay) 2 | add_subdirectory(compute_RVD) 3 | add_subdirectory(compute_CSG) 4 | add_subdirectory(opennl_LSCM) 5 | add_subdirectory(opennl_mesh_smooth) 6 | add_subdirectory(manifold_harmonics) 7 | add_subdirectory(opennl_basic_example) 8 | add_subdirectory(simple_raytrace) 9 | add_subdirectory(boolean_operations) 10 | add_subdirectory(intersect) 11 | -------------------------------------------------------------------------------- /src/examples/geogram/boolean_operations/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME boolean_op) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/compute_CSG/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME compute_CSG) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/compute_RVD/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME compute_RVD) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/compute_delaunay/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME compute_delaunay) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/intersect/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME intersect) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/manifold_harmonics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME manifold_harmonics) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/opennl_LSCM/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME opennl_LSCM) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/opennl_basic_example/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME opennl_basic_example) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/opennl_mesh_smooth/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME opennl_mesh_smooth) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/geogram/simple_raytrace/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(APP_NAME simple_raytrace) 2 | 3 | aux_source_directories(SOURCES "" .) 4 | vor_add_executable(${APP_NAME} ${SOURCES}) 5 | target_link_libraries(${APP_NAME} geogram) 6 | 7 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 8 | -------------------------------------------------------------------------------- /src/examples/graphics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(demo_GLUP) 2 | add_subdirectory(demo_Delaunay2d) 3 | add_subdirectory(demo_Delaunay3d) 4 | add_subdirectory(demo_Evert) 5 | add_subdirectory(demo_Raytrace) 6 | add_subdirectory(demo_Application) 7 | add_subdirectory(demo_SimpleApplication) 8 | add_subdirectory(demo_Picking) 9 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_Application/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_Application) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_Delaunay2d/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_Delaunay2d) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_Delaunay3d/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_Delaunay3d) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_Evert/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_Evert) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_GLUP/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_GLUP) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_Picking/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_Picking) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_Raytrace/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_Raytrace) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/examples/graphics/demo_SimpleApplication/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) 2 | set(APP_NAME geogram_demo_SimpleApp) 3 | 4 | aux_source_directories(SOURCES "" .) 5 | add_executable(${APP_NAME} ${SOURCES}) 6 | target_link_libraries(${APP_NAME} geogram_gfx geogram ${GLFW_LIBRARIES}) 7 | install_runtime_targets(${APP_NAME}) 8 | 9 | set_target_properties(${APP_NAME} PROPERTIES FOLDER "GEOGRAM/Examples") 10 | -------------------------------------------------------------------------------- /src/lib/geogram/NL/OpenNL.psm: -------------------------------------------------------------------------------- 1 | # OpenLN PSM description file 2 | # See tools/extract_psm.sh 3 | 4 | HEADERS="nl_linkage.h \ 5 | nl.h \ 6 | nl_ext.h \ 7 | nl_64.h" 8 | 9 | SOURCES="nl_private.h \ 10 | nl_blas.h \ 11 | nl_matrix.h \ 12 | nl_context.h \ 13 | nl_iterative_solvers.h \ 14 | nl_preconditioners.h \ 15 | nl_superlu.h \ 16 | nl_cholmod.h \ 17 | nl_arpack.h \ 18 | nl_mkl.h \ 19 | nl_cuda.h \ 20 | nl_os.c \ 21 | nl_matrix.c \ 22 | nl_context.c \ 23 | nl_blas.c \ 24 | nl_iterative_solvers.c \ 25 | nl_preconditioners.c \ 26 | nl_superlu.c \ 27 | nl_cholmod.c \ 28 | nl_arpack.c \ 29 | nl_mkl.c \ 30 | nl_cuda.c \ 31 | nl_api.c" 32 | 33 | DOC="http://alice.loria.fr/software/geogram/doc/html/nl_8h.html" 34 | 35 | EXAMPLE="../../../examples/geogram/opennl_basic_example/main.c" 36 | 37 | -------------------------------------------------------------------------------- /src/lib/geogram/basic/version.h.in: -------------------------------------------------------------------------------- 1 | 2 | #ifndef GEOGRAM_BASIC_VERSION 3 | #define GEOGRAM_BASIC_VERSION 4 | 5 | #define VORPALINE_VERSION_MAJOR "@VORPALINE_VERSION_MAJOR@" 6 | #define VORPALINE_VERSION_MINOR "@VORPALINE_VERSION_MINOR@" 7 | #define VORPALINE_VERSION_PATCH "@VORPALINE_VERSION_PATCH@" 8 | #define VORPALINE_VERSION "@VORPALINE_VERSION@" 9 | #define VORPALINE_BUILD_NUMBER "@VORPALINE_BUILD_NUMBER@" 10 | #define VORPALINE_BUILD_DATE "@VORPALINE_BUILD_DATE@" 11 | #define VORPALINE_SVN_REVISION "@VORPALINE_SVN_REVISION@" 12 | 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /src/lib/geogram/bibliography/embed_bib_files.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | bibs=" 4 | geogram.bib 5 | " 6 | 7 | cat < 13 | 14 | void register_embedded_bib_file(void); 15 | 16 | void register_embedded_bib_file() { 17 | EOF 18 | 19 | for bib in $bibs 20 | do 21 | echo " GEO::Biblio::register_references(" 22 | cat $bib | sed -e 's|\\|\\\\|g' \ 23 | -e 's|"|\\\"|g' \ 24 | -e 's|\\n|\\\\n|' \ 25 | -e 's|^| \"|' \ 26 | -e 's| *$| \\n\"|' 27 | echo " );" 28 | echo 29 | done 30 | 31 | echo "}" 32 | -------------------------------------------------------------------------------- /src/lib/geogram/geogram.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | includedir=${prefix}/include/@VORPALINE_INCLUDE_SUBPATH@ 4 | libdir=${exec_prefix}/lib@LIB_SUFFIX@ 5 | 6 | Name: geogram 7 | Description: fast, simple and easy-to-use primitives for geometric programming 8 | Version: @VORPALINE_VERSION@ 9 | URL: http://alice.loria.fr/software/geogram 10 | Requires.private: 11 | Libs: -L${libdir} -Wl,-rpath ${libdir} -lgeogram 12 | Libs.private: 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /src/lib/geogram/numerics/MultiPrecision.psm: -------------------------------------------------------------------------------- 1 | # MultiPrecision PSM description file 2 | # See tools/extract_psm.sh 3 | 4 | HEADERS="../api/defs.h \ 5 | ../basic/common.h \ 6 | ../basic/argused.h \ 7 | ../basic/numeric.h \ 8 | ../basic/psm.h \ 9 | ../basic/memory.h \ 10 | ../basic/thread_sync.h \ 11 | ../basic/determinant.h \ 12 | ../basic/rationalg.h \ 13 | multi_precision.h \ 14 | expansion_nt.h 15 | " 16 | 17 | SOURCES="multi_precision.cpp \ 18 | expansion_nt.cpp 19 | " 20 | 21 | DOC="http://alice.loria.fr/software/geogram/doc/html/multi__precision_8h.html" 22 | EXAMPLE="../../../tests/test_expansion_nt/main.cpp" 23 | COPYDIR="../../../tests/test_expansion_nt/CGAL" 24 | 25 | extract_readme() { 26 | cat < 6 | using stdext::hash_map; 7 | #else // !WIN32 8 | #include 9 | using namespace __gnu_cxx; 10 | 11 | namespace __gnu_cxx 12 | { 13 | template<> struct hash { 14 | size_t operator()(long long __x) const { return __x; } 15 | }; 16 | template<> struct hash { 17 | size_t operator()(const long long __x) const { return __x; } 18 | }; 19 | 20 | 21 | template<> struct hash { 22 | size_t operator()(unsigned long long __x) const { return __x; } 23 | }; 24 | template<> struct hash { 25 | size_t operator()(const unsigned long long __x) const { return __x; } 26 | }; 27 | } 28 | #endif // WIN32 29 | #endif // HASH_INCLUDED 30 | 31 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/lua/README: -------------------------------------------------------------------------------- 1 | 2 | This is Lua 5.3.3, released on 30 May 2016. 3 | 4 | For installation instructions, license details, and 5 | further information about Lua, see doc/readme.html. 6 | 7 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/lua/lapi.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lapi.h,v 2.9 2015/03/06 19:49:50 roberto Exp $ 3 | ** Auxiliary functions from Lua API 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lapi_h 8 | #define lapi_h 9 | 10 | 11 | #include "llimits.h" 12 | #include "lstate.h" 13 | 14 | #define api_incr_top(L) {L->top++; api_check(L, L->top <= L->ci->top, \ 15 | "stack overflow");} 16 | 17 | #define adjustresults(L,nres) \ 18 | { if ((nres) == LUA_MULTRET && L->ci->top < L->top) L->ci->top = L->top; } 19 | 20 | #define api_checknelems(L,n) api_check(L, (n) < (L->top - L->ci->func), \ 21 | "not enough elements in the stack") 22 | 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/lua/lprefix.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lprefix.h,v 1.2 2014/12/29 16:54:13 roberto Exp $ 3 | ** Definitions for Lua code that must come before any other header file 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lprefix_h 8 | #define lprefix_h 9 | 10 | 11 | /* 12 | ** Allows POSIX/XSI stuff 13 | */ 14 | #if !defined(LUA_USE_C89) /* { */ 15 | 16 | #if !defined(_XOPEN_SOURCE) 17 | #define _XOPEN_SOURCE 600 18 | #elif _XOPEN_SOURCE == 0 19 | #undef _XOPEN_SOURCE /* use -D_XOPEN_SOURCE=0 to undefine it */ 20 | #endif 21 | 22 | /* 23 | ** Allows manipulation of large files in gcc and some other compilers 24 | */ 25 | #if !defined(LUA_32BITS) && !defined(_FILE_OFFSET_BITS) 26 | #define _LARGEFILE_SOURCE 1 27 | #define _FILE_OFFSET_BITS 64 28 | #endif 29 | 30 | #endif /* } */ 31 | 32 | 33 | /* 34 | ** Windows stuff 35 | */ 36 | #if defined(_WIN32) /* { */ 37 | 38 | #if !defined(_CRT_SECURE_NO_WARNINGS) 39 | #define _CRT_SECURE_NO_WARNINGS /* avoid warnings about ISO C functions */ 40 | #endif 41 | 42 | #endif /* } */ 43 | 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/lua/lundump.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** $Id: lundump.h,v 1.45 2015/09/08 15:41:05 roberto Exp $ 3 | ** load precompiled Lua chunks 4 | ** See Copyright Notice in lua.h 5 | */ 6 | 7 | #ifndef lundump_h 8 | #define lundump_h 9 | 10 | #include "llimits.h" 11 | #include "lobject.h" 12 | #include "lzio.h" 13 | 14 | 15 | /* data to catch conversion errors */ 16 | #define LUAC_DATA "\x19\x93\r\n\x1a\n" 17 | 18 | #define LUAC_INT 0x5678 19 | #define LUAC_NUM cast_num(370.5) 20 | 21 | #define MYINT(s) (s[0]-'0') 22 | #define LUAC_VERSION (MYINT(LUA_VERSION_MAJOR)*16+MYINT(LUA_VERSION_MINOR)) 23 | #define LUAC_FORMAT 0 /* this is the official format */ 24 | 25 | /* load one chunk; from lundump.c */ 26 | LUAI_FUNC LClosure* luaU_undump (lua_State* L, ZIO* Z, const char* name); 27 | 28 | /* dump one chunk; from ldump.c */ 29 | LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, 30 | void* data, int strip); 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/tetgen/README.txt: -------------------------------------------------------------------------------- 1 | tetgen: A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator 2 | website: http://wias-berlin.de/software/tetgen/ 3 | 4 | license: GNU Affero General Public License: 5 | http://www.gnu.org/licenses/agpl-3.0.en.html 6 | 7 | Free for academic use, contact copyright owners at 8 | tetgen@wias-berlin.de for other uses, more information on: 9 | 10 | http://wias-berlin.de/software/tetgen/1.5/FAQ-license.html -------------------------------------------------------------------------------- /src/lib/geogram/third_party/tetgen/Tetgen1.6/README: -------------------------------------------------------------------------------- 1 | WIP: including tetgen1.6 (the used version in ../ is 1.5) 2 | Seems that everything does not work, to be investigated... 3 | 4 | ==================================================================== 5 | 6 | This is TetGen version 1.6.0 (released on August 31, 2020) 7 | 8 | Please see the documentation of TetGen for compiling and using TetGen. 9 | It is available at the following link: 10 | 11 | http://www.tetgen.org 12 | 13 | For more information on this product, contact : 14 | 15 | Hang Si 16 | Research Group of Numerical Mathematics and Scientific Computing 17 | Weierstrass Institute for Applied Analysis and Stochastics 18 | Mohrenstr. 39 19 | 10117 Berlin, Germany 20 | 21 | EMail: 22 | Web Site: http://www.wias-berlin.de/~si 23 | 24 | ------------------- IMPORTANCE NOTICE ----------------------------- 25 | 26 | BEFORE INTALLING OR USING TetGen(R) READ the 27 | GENERAL LICENSE TERMS AND CONDITIONS 28 | 29 | ------------------------------------------------------------------- -------------------------------------------------------------------------------- /src/lib/geogram/third_party/zlib/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright notice: 2 | 3 | (C) 1995-2022 Jean-loup Gailly and Mark Adler 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | 21 | Jean-loup Gailly Mark Adler 22 | jloup@gzip.org madler@alumni.caltech.edu 23 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/zlib/fix_includes.sh: -------------------------------------------------------------------------------- 1 | for i in `ls *.h *.c` 2 | do 3 | cp $i $i.back 4 | cat $i.back | sed -e 's|#include \"\(.*\)\"|#include |g' > $i 5 | done 6 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/zlib/gzclose.c: -------------------------------------------------------------------------------- 1 | /* gzclose.c -- zlib gzclose() function 2 | * Copyright (C) 2004, 2010 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | #include 7 | 8 | /* gzclose() is in a separate file so that it is linked in only if it is used. 9 | That way the other gzclose functions can be used instead to avoid linking in 10 | unneeded compression or decompression routines. */ 11 | int ZEXPORT gzclose(gzFile file) { 12 | #ifndef NO_GZCOMPRESS 13 | gz_statep state; 14 | 15 | if (file == NULL) 16 | return Z_STREAM_ERROR; 17 | state = (gz_statep)file; 18 | 19 | return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); 20 | #else 21 | return gzclose_r(file); 22 | #endif 23 | } 24 | -------------------------------------------------------------------------------- /src/lib/geogram/third_party/zlib/inffast.h: -------------------------------------------------------------------------------- 1 | /* inffast.h -- header to use inffast.c 2 | * Copyright (C) 1995-2003, 2010 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* WARNING: this file should *not* be used by applications. It is 7 | part of the implementation of the compression library and is 8 | subject to change. Applications should only use zlib.h. 9 | */ 10 | 11 | void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start); 12 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/GLUP/ShaderToy.h: -------------------------------------------------------------------------------- 1 | //import 2 | 3 | uniform float iTime; 4 | uniform float iFrame; 5 | uniform vec4 iDate; 6 | const vec3 iResolution=vec3(1024.0, 1024.0, 1.0); 7 | const vec4 iMouse=vec4(0.0, 0.0, 0.0, 0.0); 8 | uniform sampler2D iChannel0; 9 | uniform sampler2D iChannel1; 10 | uniform sampler2D iChannel2; 11 | uniform sampler2D iChannel3; 12 | 13 | void mainImage(out vec4 fragColor, in vec2 fragCoord); 14 | 15 | void main(void) { 16 | mainImage(glup_FragColor, 1024.0*tex_coord.xy); 17 | } 18 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/GLUP/portable_fragment_shader.h: -------------------------------------------------------------------------------- 1 | //import 2 | //import 3 | 4 | #if defined(GLUP150) || defined (GLUP440) 5 | in VertexData { 6 | vec4 color; 7 | vec4 tex_coord; 8 | vec3 normal; 9 | } FragmentIn; 10 | vec4 tex_coord = FragmentIn.tex_coord; 11 | #elif defined(GLUPES2) 12 | glup_in vec4 tex_coord; 13 | #endif 14 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/GLUP/stdglup.h: -------------------------------------------------------------------------------- 1 | //import 2 | //import 3 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/GLUPES/lines_fragment_shader.h: -------------------------------------------------------------------------------- 1 | //import 2 | //import 3 | //import 4 | //import 5 | //import 6 | //import 7 | 8 | glup_in vec4 color; 9 | glup_in vec4 tex_coord; 10 | glup_in float clip_dist; 11 | glup_flat glup_in glup_id primitive_id; 12 | 13 | void main() { 14 | 15 | if(glupIsEnabled(GLUP_CLIPPING) && (clip_dist < 0.0)) { 16 | discard; 17 | } 18 | 19 | if(glupIsEnabled(GLUP_PICKING)) { 20 | glup_FragColor = glup_picking(int(primitive_id)); 21 | return; 22 | } 23 | 24 | vec4 result; 25 | if(glupIsEnabled(GLUP_VERTEX_COLORS)) { 26 | result = color; 27 | } else { 28 | result = GLUP.front_color; 29 | } 30 | if(glupIsEnabled(GLUP_TEXTURING)) { 31 | result = glup_texturing(result, tex_coord); 32 | } 33 | glup_FragColor = result; 34 | glup_alpha_discard(); 35 | } 36 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/GLUPES/vertex_shader_state.h: -------------------------------------------------------------------------------- 1 | struct VSUniformState { 2 | mat3 normal_matrix; 3 | mat4 modelviewprojection_matrix; 4 | mat4 modelview_matrix; 5 | mat4 projection_matrix; 6 | mat4 texture_matrix; 7 | mat4 inverse_modelview_matrix; 8 | mat4 inverse_projection_matrix; 9 | mat4 inverse_modelviewprojection_matrix; 10 | vec4 world_clip_plane; 11 | float point_size; 12 | vec4 viewport; 13 | float mesh_width; 14 | }; 15 | 16 | uniform VSUniformState GLUP_VS; 17 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/GLUPGLSL/thick_lines_vertex_shader.h: -------------------------------------------------------------------------------- 1 | //import 2 | //import 3 | //import 4 | //import 5 | //import 6 | 7 | in vec4 vertex_in; 8 | in vec4 color_in; 9 | in vec4 tex_coord_in; 10 | 11 | out VertexData { 12 | #ifdef GLUP_GL_ES 13 | vec4 vertex_clip_space; 14 | #endif 15 | vec4 color; 16 | vec4 tex_coord; 17 | } VertexOut; 18 | 19 | void main(void) { 20 | if(glupIsEnabled(GLUP_VERTEX_COLORS)) { 21 | VertexOut.color = color_in; 22 | } 23 | if(glupIsEnabled(GLUP_TEXTURING)) { 24 | if(glupIsEnabled(GLUP_INDIRECT_TEXTURING)) { 25 | VertexOut.tex_coord = tex_coord_in; 26 | } else { 27 | VertexOut.tex_coord = 28 | GLUP.texture_matrix * tex_coord_in; 29 | } 30 | } 31 | gl_Position = GLUP.modelviewprojection_matrix * vertex_in; 32 | } 33 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/embedded_shaders.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | namespace GLUP { 4 | void register_embedded_shaders_GLUP(); 5 | void register_embedded_shaders_fullscreen(); 6 | } 7 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/GLUP/shaders/fullscreen/vertex_shader.h: -------------------------------------------------------------------------------- 1 | //import 2 | //import 3 | 4 | glup_in vec2 vertex_in; 5 | glup_in vec2 tex_coord_in; 6 | glup_out vec2 tex_coord; 7 | 8 | void main() { 9 | tex_coord = tex_coord_in; 10 | gl_Position = vec4(vertex_in, 0.0, 1.0); 11 | } 12 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/geogram_gfx.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | exec_prefix=${prefix} 3 | includedir=${prefix}/include/@VORPALINE_INCLUDE_SUBPATH@ 4 | libdir=${exec_prefix}/lib@LIB_SUFFIX@ 5 | 6 | Name: geogram_gfx 7 | Description: Graphic rendering and GUI for geogram 8 | Version: @VORPALINE_VERSION@ 9 | URL: http://alice.loria.fr/software/geogram 10 | Requires.private: 11 | Libs: -L${libdir} -Wl,-rpath ${libdir} -lgeogram_gfx -lgeogram -l@GEO_GLFW3_LIBNAME@ 12 | Libs.private: 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/README.txt: -------------------------------------------------------------------------------- 1 | Provenance of the colormaps: https://bids.github.io/colormap/ 2 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/blue_red.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char * blue_red_xpm[] = { 3 | "32 1 4 1", 4 | " c None", 5 | ". c #0092FF", 6 | "+ c #009BFF", 7 | "@ c #FF0000", 8 | "...............+@@@@@@@@@@@@@@@@"}; 9 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/cei_60757.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char *cei_60757_xpm[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 1 30 1 ", 5 | " c #000000", 6 | ". c #130C03", 7 | "X c #5C3C12", 8 | "o c #FA0301", 9 | "O c #FF0600", 10 | "+ c #CB270B", 11 | "@ c #87581A", 12 | "# c #925218", 13 | "$ c #FF4800", 14 | "% c #00FF00", 15 | "& c #38FF00", 16 | "* c #00DD22", 17 | "= c #FF9900", 18 | "- c #FFA600", 19 | "; c #FFC200", 20 | ": c #C7FF00", 21 | "> c #FFF300", 22 | ", c #FFFF00", 23 | "< c #0053AC", 24 | "1 c #0003FC", 25 | "2 c #0B01FB", 26 | "3 c #5100EB", 27 | "4 c #8C00DB", 28 | "5 c #9206D9", 29 | "6 c #A453CD", 30 | "7 c #BEBEBE", 31 | "8 c #BAB0C0", 32 | "9 c #D3D3D2", 33 | "0 c #F6F6F6", 34 | "q c #FFFFFF", 35 | /* pixels */ 36 | " .X@#+oO$=-;>,:&%*<1234568790qq" 37 | }; 38 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/french.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char *french_xpm[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 1 32 1 ", 5 | " c #F82222", 6 | ". c #F82C2E", 7 | "X c #F83E41", 8 | "o c #F84F50", 9 | "O c #F86262", 10 | "+ c #F87676", 11 | "@ c #0906F8", 12 | "# c #1212F8", 13 | "$ c #2226F8", 14 | "% c #3637F8", 15 | "& c #4849F8", 16 | "* c #575AF8", 17 | "= c #6A6CF8", 18 | "- c #7E7DF8", 19 | "; c #F88885", 20 | ": c #F89996", 21 | "> c #F8ABAA", 22 | ", c #F8BCBB", 23 | "< c #928FF8", 24 | "1 c #A3A0F8", 25 | "2 c #B2B2F8", 26 | "3 c #F8CECA", 27 | "4 c #F8DFDE", 28 | "5 c #C6C3F8", 29 | "6 c #D8D5F8", 30 | "7 c #F8ECEB", 31 | "8 c #F8F3EF", 32 | "9 c #E6E5F8", 33 | "0 c #F1EFF8", 34 | "q c #F8F9F5", 35 | "w c #F7F6F8", 36 | "e c #F8FAF8", 37 | /* pixels */ 38 | "@#$%&*=-<125690weq8743,>:;+OoX. " 39 | }; 40 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/inferno.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char * inferno_xpm[] = { 3 | "32 1 34 1", 4 | " c None", 5 | ". c #01010A", 6 | "+ c #07051B", 7 | "@ c #0F092D", 8 | "# c #1A0C41", 9 | "$ c #280A52", 10 | "% c #350A60", 11 | "& c #440968", 12 | "* c #500D6C", 13 | "= c #5D126E", 14 | "- c #69166E", 15 | "; c #761B6D", 16 | "> c #83206C", 17 | ", c #8E2468", 18 | "' c #9C2964", 19 | ") c #A82D5F", 20 | "! c #B43358", 21 | "~ c #C03A51", 22 | "{ c #CB4149", 23 | "] c #D44940", 24 | "^ c #DE5337", 25 | "/ c #E75D2E", 26 | "( c #EE6924", 27 | "_ c #F2771A", 28 | ": c #F78310", 29 | "< c #FA9307", 30 | "[ c #FBA009", 31 | "} c #FBB014", 32 | "| c #FABF25", 33 | "1 c #F7CF39", 34 | "2 c #F4DD52", 35 | "3 c #F1EC6F", 36 | "4 c #F6F891", 37 | "5 c #B33358", 38 | ".+@#$%&*=-;>,')!~{]^/(_:<[}|1234"}; 39 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/magma.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char * magma_xpm[] = { 3 | "32 1 46 1", 4 | " c None", 5 | ". c #01010A", 6 | "+ c #070619", 7 | "@ c #0E0A2A", 8 | "# c #180F3D", 9 | "$ c #221151", 10 | "% c #2F1162", 11 | "& c #3D0F71", 12 | "* c #4A1079", 13 | "= c #56147E", 14 | "- c #631980", 15 | "; c #6E1E80", 16 | "> c #7C2381", 17 | ", c #882881", 18 | "' c #942C7F", 19 | ") c #A12F7F", 20 | "! c #AF347B", 21 | "~ c #BC3878", 22 | "{ c #C83D73", 23 | "] c #D4436C", 24 | "^ c #DF4B66", 25 | "/ c #EA5560", 26 | "( c #F0615C", 27 | "_ c #F66E5B", 28 | ": c #FA7D5D", 29 | "< c #FC8D64", 30 | "[ c #FD9C6B", 31 | "} c #FEAA74", 32 | "| c #FEB97F", 33 | "1 c #FEC88C", 34 | "2 c #FDD598", 35 | "3 c #FCE4A6", 36 | "4 c #FCF3B5", 37 | "5 c #3D0F70", 38 | "6 c #63197F", 39 | "7 c #6E1E81", 40 | "8 c #942C80", 41 | "9 c #A12F7E", 42 | "0 c #BB3878", 43 | "a c #FC8D63", 44 | "b c #FD9B6A", 45 | "c c #FEA974", 46 | "d c #FEC78B", 47 | "e c #FDD698", 48 | "f c #FCE4A5", 49 | "g c #FCF3B6", 50 | ".+@#$%&*=-;>,')!~{]^/(_:<[}|1234"}; 51 | 52 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/plasma.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char * plasma_xpm[] = { 3 | "32 1 36 1", 4 | " c None", 5 | ". c #19068B", 6 | "+ c #290494", 7 | "@ c #39049A", 8 | "# c #46029E", 9 | "$ c #5202A3", 10 | "% c #5F00A6", 11 | "& c #6B00A8", 12 | "* c #7801A8", 13 | "= c #8205A7", 14 | "- c #8E0CA4", 15 | "; c #99149F", 16 | "> c #A31D99", 17 | ", c #AD2792", 18 | "' c #B6308B", 19 | ") c #BE3883", 20 | "! c #C6417C", 21 | "~ c #CD4976", 22 | "{ c #D4536E", 23 | "] c #DC5B66", 24 | "^ c #E26560", 25 | "/ c #E76E5A", 26 | "( c #EC7852", 27 | "_ c #F1824C", 28 | ": c #F58C46", 29 | "< c #F8973E", 30 | "[ c #FCA238", 31 | "} c #FCAD31", 32 | "| c #FDBA2B", 33 | "1 c #FCC627", 34 | "2 c #FBD324", 35 | "3 c #F8E024", 36 | "4 c #F2EE26", 37 | "5 c #FCAE31", 38 | "6 c #FDB92B", 39 | "7 c #FCC527", 40 | ".+@#$%&*=-;>,')!~{]^/(_:<[}|1234"}; 41 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/rainbow.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char *rainbow_xpm[] = { 3 | /* columns rows colors chars-per-pixel */ 4 | "32 1 32 1 ", 5 | " c #F82A00", 6 | ". c #F83700", 7 | "X c #F84F00", 8 | "o c #F86800", 9 | "O c #F87F00", 10 | "+ c #0BF407", 11 | "@ c #1DFC00", 12 | "# c #02E418", 13 | "$ c #35FC00", 14 | "% c #00D02E", 15 | "& c #4AFC00", 16 | "* c #5FFC00", 17 | "= c #78FC00", 18 | "- c #00B948", 19 | "; c #009F61", 20 | ": c #008876", 21 | "> c #F89600", 22 | ", c #F8AF00", 23 | "< c #92FC00", 24 | "1 c #ABFC00", 25 | "2 c #F8C700", 26 | "3 c #F8DD00", 27 | "4 c #C4FC00", 28 | "5 c #DAFC00", 29 | "6 c #F5EF00", 30 | "7 c #ECFA00", 31 | "8 c #00718B", 32 | "9 c #0058A3", 33 | "0 c #0041BD", 34 | "q c #002AD5", 35 | "w c #0011EB", 36 | "e c #0001F6", 37 | "ewq098:;-%#+@$&*=<1457632,>OoX. " 38 | }; 39 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/gui/colormaps/viridis.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static const char * viridis_xpm[] = { 3 | "32 1 34 1", 4 | " c None", 5 | ". c #45075B", 6 | "+ c #471266", 7 | "@ c #481E6F", 8 | "# c #482877", 9 | "$ c #46327E", 10 | "% c #443A82", 11 | "& c #404387", 12 | "* c #3D4E8A", 13 | "= c #38568B", 14 | "- c #355D8D", 15 | "; c #31658D", 16 | "> c #2E6D8E", 17 | ", c #2A758E", 18 | "' c #277C8E", 19 | ") c #25848E", 20 | "! c #228C8C", 21 | "~ c #20928C", 22 | "{ c #1E998A", 23 | "] c #1FA287", 24 | "^ c #23A882", 25 | "/ c #2AB07F", 26 | "( c #35B779", 27 | "_ c #41BE71", 28 | ": c #50C469", 29 | "< c #61CA5F", 30 | "[ c #73D054", 31 | "} c #86D449", 32 | "| c #9AD93B", 33 | "1 c #B0DC2F", 34 | "2 c #C4E021", 35 | "3 c #D9E219", 36 | "4 c #EEE51B", 37 | "5 c #3C4E8A", 38 | ".+@#$%&5=-;>,')!~{]^/(_:<[}|1234"}; 39 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/ImGuiColorTextEdit/LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 BalazsJako 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/ImGuiColorTextEdit/README.txt: -------------------------------------------------------------------------------- 1 | ImGui Text Editor 2 | By BalazsJako 3 | This version downloaded from: https://github.com/BalazsJako/ImGuiColorTextEdit 4 | Date: Fri Aug 17 14:49:25 CEST 2018 5 | License: MIT 6 | My modifications are indicated by [Bruno Levy] tags. 7 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/glad/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 David Herberth 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/glad/README.txt: -------------------------------------------------------------------------------- 1 | Glad : Multi-Language GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs. 2 | Website: http://glad.dav1d.de/ 3 | 4 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/imgui_fonts/README.txt: -------------------------------------------------------------------------------- 1 | This files generated using the program binary_to_compressed_c.cpp 2 | in ImGui/misc/fonts from the following fonts: 3 | 4 | * cousine_regular 5 | by Steve Matteson 6 | Digitized data copyright (c) 2010 Google Corporation. 7 | Licensed under the SIL Open Font License, Version 1.1 8 | https://fonts.google.com/specimen/Cousine 9 | 10 | * roboto_medium 11 | Apache License 2.0 12 | by Christian Robertson 13 | https://fonts.google.com/specimen/Roboto 14 | 15 | * fa_brands 16 | * fa_regular 17 | * fa_solid 18 | https://fontawesome.com/ 19 | 20 | -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/imgui_lua_bindings/README.txt: -------------------------------------------------------------------------------- 1 | ImGUI LUA bindings 2 | Downloaded from: https://github.com/patrickriordan/imgui_lua_bindings 3 | Fri Aug 25 08:27:26 CEST 2017 4 | 5 | ./generate_imgui_bindings.pl <../ImGui/imgui.h >imgui_iterator.h 6 | 7 | Changes in imgui_lua_bindings.cpp: 8 | 9 | * silenced some warnings for ICC, gcc, clang 10 | * geogram include path 11 | * #include "imgui_iterator.cpp" -> #include "imgui_iterator.h" 12 | (else CMake will want to compile imgui_iterator.cpp directly) 13 | * END_INT_POINTER and END_UINT_POINTER: use lua_pushinteger() instead 14 | of lua_pushnumber() -------------------------------------------------------------------------------- /src/lib/geogram_gfx/third_party/imgui_lua_bindings/parse_blocks.pl: -------------------------------------------------------------------------------- 1 | ##!/usr/bin/perl 2 | #use strict; 3 | #use warnings; 4 | #use diagnostics; 5 | # 6 | #my ($blocksref, $blocknamesref) = parse_blocks(); 7 | # 8 | #my @blocks = @$blocksref; 9 | #my @blocknames = @$blocknamesref; 10 | # 11 | #my $name; 12 | #my $block; 13 | #foreach $name (@blocknames) { 14 | # print "BLOCKNAME" . $name; 15 | #} 16 | # 17 | #foreach $block (@blocks) { 18 | # print "---------------BLOCK START-----------\n"; 19 | # print $block; 20 | # print "---------------BLOCK END -------------\n" 21 | #} 22 | 23 | #returns list of string blocks from stdin 24 | sub parse_blocks { 25 | my @blocks; 26 | my @blocknames; 27 | my $lastline; 28 | my $curBlock; 29 | while (my $line = ) { 30 | #This is a crappy way of parsing that works for 31 | # imgui 32 | if ($line =~ m/^{$/) { 33 | push @blocknames, $lastline; 34 | $curBlock = ""; 35 | next; 36 | } 37 | if ($line =~ m/^};$|^} \/\//) { 38 | push @blocks, $curBlock; 39 | $curBlock = ""; 40 | next; 41 | } 42 | 43 | $curBlock .= $line . "\n"; 44 | $lastline = $line; 45 | } 46 | return (\@blocks, \@blocknames); 47 | } 48 | 49 | 1; 50 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/ARPACK/dnaupe.c: -------------------------------------------------------------------------------- 1 | /* ../FORTRAN/ARPACK/SRC/dnaupe.f -- translated by f2c (version 20100827). 2 | You must link the resulting object file with libf2c: 3 | on Microsoft Windows system, link with libf2c.lib; 4 | on Linux or Unix systems, link with .../path/to/libf2c.a -lm 5 | or, if you install libf2c.a in a standard place, with -lf2c -lm 6 | -- in that order, at the end of the command line, as in 7 | cc *.o -lf2c -lm 8 | Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., 9 | 10 | http://www.netlib.org/f2c/libf2c.zip 11 | */ 12 | 13 | #include "f2c.h" 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/ARPACK/snaupe.c: -------------------------------------------------------------------------------- 1 | /* ../FORTRAN/ARPACK/SRC/snaupe.f -- translated by f2c (version 20100827). 2 | You must link the resulting object file with libf2c: 3 | on Microsoft Windows system, link with libf2c.lib; 4 | on Linux or Unix systems, link with .../path/to/libf2c.a -lm 5 | or, if you install libf2c.a in a standard place, with -lf2c -lm 6 | -- in that order, at the end of the command line, as in 7 | cc *.o -lf2c -lm 8 | Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., 9 | 10 | http://www.netlib.org/f2c/libf2c.zip 11 | */ 12 | 13 | #include "f2c.h" 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/CBLAS/README: -------------------------------------------------------------------------------- 1 | These files were extracted from CLAPACK-3.2.1/BLAS/ 2 | 3 | A complete version of CLAPACK can be downloaded from: 4 | http://www.netlib.org/clapack/ 5 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/CBLAS/dcabs1.c: -------------------------------------------------------------------------------- 1 | /* dcabs1.f -- translated by f2c (version 20061008). 2 | You must link the resulting object file with libf2c: 3 | on Microsoft Windows system, link with libf2c.lib; 4 | on Linux or Unix systems, link with .../path/to/libf2c.a -lm 5 | or, if you install libf2c.a in a standard place, with -lf2c -lm 6 | -- in that order, at the end of the command line, as in 7 | cc *.o -lf2c -lm 8 | Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., 9 | 10 | http://www.netlib.org/f2c/libf2c.zip 11 | */ 12 | 13 | #include "f2c.h" 14 | #include "blaswrap.h" 15 | 16 | doublereal dcabs1_(doublecomplex *z__) 17 | { 18 | /* System generated locals */ 19 | doublereal ret_val, d__1, d__2; 20 | 21 | /* Builtin functions */ 22 | double d_imag(doublecomplex *); 23 | 24 | /* .. Scalar Arguments .. */ 25 | /* .. */ 26 | /* .. */ 27 | /* Purpose */ 28 | /* ======= */ 29 | 30 | /* DCABS1 computes absolute value of a double complex number */ 31 | 32 | /* .. Intrinsic Functions .. */ 33 | 34 | ret_val = (d__1 = z__->r, abs(d__1)) + (d__2 = d_imag(z__), abs(d__2)); 35 | return ret_val; 36 | } /* dcabs1_ */ 37 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/CBLAS/scabs1.c: -------------------------------------------------------------------------------- 1 | /* scabs1.f -- translated by f2c (version 20061008). 2 | You must link the resulting object file with libf2c: 3 | on Microsoft Windows system, link with libf2c.lib; 4 | on Linux or Unix systems, link with .../path/to/libf2c.a -lm 5 | or, if you install libf2c.a in a standard place, with -lf2c -lm 6 | -- in that order, at the end of the command line, as in 7 | cc *.o -lf2c -lm 8 | Source for libf2c is in /netlib/f2c/libf2c.zip, e.g., 9 | 10 | http://www.netlib.org/f2c/libf2c.zip 11 | */ 12 | 13 | #include "f2c.h" 14 | #include "blaswrap.h" 15 | 16 | doublereal scabs1_(complex *z__) 17 | { 18 | /* System generated locals */ 19 | real ret_val, r__1, r__2; 20 | 21 | /* Builtin functions */ 22 | double r_imag(complex *); 23 | 24 | /* .. Scalar Arguments .. */ 25 | /* .. */ 26 | 27 | /* Purpose */ 28 | /* ======= */ 29 | 30 | /* SCABS1 computes absolute value of a complex number */ 31 | 32 | /* .. Intrinsic Functions .. */ 33 | /* .. */ 34 | ret_val = (r__1 = z__->r, dabs(r__1)) + (r__2 = r_imag(z__), dabs(r__2)); 35 | return ret_val; 36 | } /* scabs1_ */ 37 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/CLAPACK/README: -------------------------------------------------------------------------------- 1 | These files were extracted from CLAPACK-3.2.1/SRC/ and CLAPACK-3.2.1/EXTRA/ 2 | 3 | A complete version of CLAPACK can be downloaded from: 4 | http://www.netlib.org/clapack/ 5 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/CLAPACK/clapack_dummy_argc.c: -------------------------------------------------------------------------------- 1 | int xargc = 0; 2 | char **xargv = 0; -------------------------------------------------------------------------------- /src/lib/third_party/numerics/INCLUDE/README: -------------------------------------------------------------------------------- 1 | These files were extracted from CLAPACK-3.2.1/INCLUDE/ 2 | 3 | A complete version of CLAPACK can be downloaded from: 4 | http://www.netlib.org/clapack/ 5 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/arith.h: -------------------------------------------------------------------------------- 1 | #define IEEE_8087 2 | #define Arith_Kind_ASL 1 3 | #define Long int 4 | #define Intcast (int)(long) 5 | #define Double_Align 6 | #define X64_bit_pointers 7 | #define QNaN0 0x0 8 | #define QNaN1 0xfff80000 9 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/fp.h: -------------------------------------------------------------------------------- 1 | #define FMAX 40 2 | #define EXPMAXDIGS 8 3 | #define EXPMAX 99999999 4 | /* FMAX = max number of nonzero digits passed to atof() */ 5 | /* EXPMAX = 10^EXPMAXDIGS - 1 = largest allowed exponent absolute value */ 6 | 7 | #ifdef V10 /* Research Tenth-Edition Unix */ 8 | #include "local.h" 9 | #endif 10 | 11 | /* MAXFRACDIGS and MAXINTDIGS are for wrt_F -- bounds (not necessarily 12 | tight) on the maximum number of digits to the right and left of 13 | * the decimal point. 14 | */ 15 | 16 | #ifdef VAX 17 | #define MAXFRACDIGS 56 18 | #define MAXINTDIGS 38 19 | #else 20 | #ifdef CRAY 21 | #define MAXFRACDIGS 9880 22 | #define MAXINTDIGS 9864 23 | #else 24 | /* values that suffice for IEEE double */ 25 | #define MAXFRACDIGS 344 26 | #define MAXINTDIGS 308 27 | #endif 28 | #endif 29 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/ftell64_.c.unused: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #include "fio.h" 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | 7 | static FILE * 8 | #ifdef KR_headers 9 | unit_chk(Unit, who) integer Unit; char *who; 10 | #else 11 | unit_chk(integer Unit, char *who) 12 | #endif 13 | { 14 | if (Unit >= MXUNIT || Unit < 0) 15 | f__fatal(101, who); 16 | return f__units[Unit].ufd; 17 | } 18 | 19 | longint 20 | #ifdef KR_headers 21 | ftell64_(Unit) integer *Unit; 22 | #else 23 | ftell64_(integer *Unit) 24 | #endif 25 | { 26 | FILE *f; 27 | return (f = unit_chk(*Unit, "ftell")) ? FTELL(f) : -1L; 28 | } 29 | 30 | int 31 | #ifdef KR_headers 32 | fseek64_(Unit, offset, whence) integer *Unit, *whence; longint *offset; 33 | #else 34 | fseek64_(integer *Unit, longint *offset, integer *whence) 35 | #endif 36 | { 37 | FILE *f; 38 | int w = (int)*whence; 39 | #ifdef SEEK_SET 40 | static int wohin[3] = { SEEK_SET, SEEK_CUR, SEEK_END }; 41 | #endif 42 | if (w < 0 || w > 2) 43 | w = 0; 44 | #ifdef SEEK_SET 45 | w = wohin[w]; 46 | #endif 47 | return !(f = unit_chk(*Unit, "fseek")) 48 | || FSEEK(f, (OFF_T)*offset, w) ? 1 : 0; 49 | } 50 | #ifdef __cplusplus 51 | } 52 | #endif 53 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_abort_.c: -------------------------------------------------------------------------------- 1 | #include "stdio.h" 2 | #include "f2c.h" 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | 7 | #ifdef KR_headers 8 | extern VOID sig_die(); 9 | 10 | int abort_() 11 | #else 12 | extern void sig_die(const char*,int); 13 | 14 | int abort_(void) 15 | #endif 16 | { 17 | sig_die("Fortran abort routine called", 1); 18 | return 0; /* not reached */ 19 | } 20 | #ifdef __cplusplus 21 | } 22 | #endif 23 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_c_abs.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern double f__cabs(); 8 | 9 | double c_abs(z) complex *z; 10 | #else 11 | extern double f__cabs(double, double); 12 | 13 | double c_abs(complex *z) 14 | #endif 15 | { 16 | return( f__cabs( z->r, z->i ) ); 17 | } 18 | #ifdef __cplusplus 19 | } 20 | #endif 21 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_c_cos.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | extern double sin(), cos(), sinh(), cosh(); 5 | 6 | VOID c_cos(r, z) complex *r, *z; 7 | #else 8 | #undef abs 9 | #include "math.h" 10 | #ifdef complex /* [BL] MSVC defines a complex macro that collides with f2c's complex */ 11 | #undef complex 12 | #endif 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | void c_cos(complex *r, complex *z) 19 | #endif 20 | { 21 | double zi = z->i, zr = z->r; 22 | r->r = cos(zr) * cosh(zi); 23 | r->i = - sin(zr) * sinh(zi); 24 | } 25 | #ifdef __cplusplus 26 | } 27 | #endif 28 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_c_exp.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | extern double exp(), cos(), sin(); 5 | 6 | VOID c_exp(r, z) complex *r, *z; 7 | #else 8 | #undef abs 9 | #include "math.h" 10 | #ifdef complex /* [BL] MSVC defines a complex macro that collides with f2c's complex */ 11 | #undef complex 12 | #endif 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | void c_exp(complex *r, complex *z) 19 | #endif 20 | { 21 | double expx, zi = z->i; 22 | 23 | expx = exp(z->r); 24 | r->r = expx * cos(zi); 25 | r->i = expx * sin(zi); 26 | } 27 | #ifdef __cplusplus 28 | } 29 | #endif 30 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_c_log.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | extern double log(), f__cabs(), atan2(); 5 | VOID c_log(r, z) complex *r, *z; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef complex /* [BL] MSVC defines a complex macro that collides with f2c's complex */ 10 | #undef complex 11 | #endif 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | extern double f__cabs(double, double); 17 | 18 | void c_log(complex *r, complex *z) 19 | #endif 20 | { 21 | double zi, zr; 22 | r->i = atan2(zi = z->i, zr = z->r); 23 | r->r = log( f__cabs(zr, zi) ); 24 | } 25 | #ifdef __cplusplus 26 | } 27 | #endif 28 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_c_sin.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | extern double sin(), cos(), sinh(), cosh(); 5 | 6 | VOID c_sin(r, z) complex *r, *z; 7 | #else 8 | #undef abs 9 | #include "math.h" 10 | #ifdef complex /* [BL] MSVC defines a complex macro that collides with f2c's complex */ 11 | #undef complex 12 | #endif 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | void c_sin(complex *r, complex *z) 19 | #endif 20 | { 21 | double zi = z->i, zr = z->r; 22 | r->r = sin(zr) * cosh(zi); 23 | r->i = cos(zr) * sinh(zi); 24 | } 25 | #ifdef __cplusplus 26 | } 27 | #endif 28 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_c_sqrt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | extern double sqrt(), f__cabs(); 5 | 6 | VOID c_sqrt(r, z) complex *r, *z; 7 | #else 8 | #undef abs 9 | #include "math.h" 10 | 11 | #ifdef complex /* [BL] MSVC defines a complex macro that collides with f2c's complex */ 12 | #undef complex 13 | #endif 14 | 15 | #ifdef __cplusplus 16 | extern "C" { 17 | #endif 18 | extern double f__cabs(double, double); 19 | 20 | void c_sqrt(complex *r, complex *z) 21 | #endif 22 | { 23 | double mag, t; 24 | double zi = z->i, zr = z->r; 25 | 26 | if( (mag = f__cabs(zr, zi)) == 0.) 27 | r->r = r->i = 0.; 28 | else if(zr > 0) 29 | { 30 | r->r = t = sqrt(0.5 * (mag + zr) ); 31 | t = zi / t; 32 | r->i = 0.5 * t; 33 | } 34 | else 35 | { 36 | t = sqrt(0.5 * (mag - zr) ); 37 | if(zi < 0) 38 | t = -t; 39 | r->i = t; 40 | t = zi / t; 41 | r->r = 0.5 * t; 42 | } 43 | } 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_cabs.c: -------------------------------------------------------------------------------- 1 | #ifdef KR_headers 2 | extern double sqrt(); 3 | double f__cabs(real, imag) double real, imag; 4 | #else 5 | #undef abs 6 | #include "math.h" 7 | #ifdef __cplusplus 8 | extern "C" { 9 | #endif 10 | double f__cabs(double real, double imag) 11 | #endif 12 | { 13 | double temp; 14 | 15 | if(real < 0) 16 | real = -real; 17 | if(imag < 0) 18 | imag = -imag; 19 | if(imag > real){ 20 | temp = real; 21 | real = imag; 22 | imag = temp; 23 | } 24 | if((real+imag) == real) 25 | return(real); 26 | 27 | temp = imag/real; 28 | temp = real*sqrt(1.0 + temp*temp); /*overflow!!*/ 29 | return(temp); 30 | } 31 | #ifdef __cplusplus 32 | } 33 | #endif 34 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_ctype.c: -------------------------------------------------------------------------------- 1 | #define My_ctype_DEF 2 | #include "ctype.h" 3 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_abs.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double d_abs(x) doublereal *x; 8 | #else 9 | double d_abs(doublereal *x) 10 | #endif 11 | { 12 | if(*x >= 0) 13 | return(*x); 14 | return(- *x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_acos.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double acos(); 5 | double d_acos(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_acos(doublereal *x) 13 | #endif 14 | { 15 | return( acos(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_asin.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double asin(); 5 | double d_asin(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_asin(doublereal *x) 13 | #endif 14 | { 15 | return( asin(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_atan.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double atan(); 5 | double d_atan(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_atan(doublereal *x) 13 | #endif 14 | { 15 | return( atan(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_atn2.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double atan2(); 5 | double d_atn2(x,y) doublereal *x, *y; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_atn2(doublereal *x, doublereal *y) 13 | #endif 14 | { 15 | return( atan2(*x,*y) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_cnjg.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | VOID 7 | #ifdef KR_headers 8 | d_cnjg(r, z) doublecomplex *r, *z; 9 | #else 10 | d_cnjg(doublecomplex *r, doublecomplex *z) 11 | #endif 12 | { 13 | doublereal zi = z->i; 14 | r->r = z->r; 15 | r->i = -zi; 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_cos.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double cos(); 5 | double d_cos(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_cos(doublereal *x) 13 | #endif 14 | { 15 | return( cos(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_cosh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double cosh(); 5 | double d_cosh(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_cosh(doublereal *x) 13 | #endif 14 | { 15 | return( cosh(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_dim.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double d_dim(a,b) doublereal *a, *b; 8 | #else 9 | double d_dim(doublereal *a, doublereal *b) 10 | #endif 11 | { 12 | return( *a > *b ? *a - *b : 0); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_exp.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double exp(); 5 | double d_exp(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_exp(doublereal *x) 13 | #endif 14 | { 15 | return( exp(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_imag.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double d_imag(z) doublecomplex *z; 8 | #else 9 | double d_imag(doublecomplex *z) 10 | #endif 11 | { 12 | return(z->i); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_int.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | double d_int(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_int(doublereal *x) 13 | #endif 14 | { 15 | return( (*x>0) ? floor(*x) : -floor(- *x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_lg10.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #define log10e 0.43429448190325182765 4 | 5 | #ifdef KR_headers 6 | double log(); 7 | double d_lg10(x) doublereal *x; 8 | #else 9 | #undef abs 10 | #include "math.h" 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | double d_lg10(doublereal *x) 15 | #endif 16 | { 17 | return( log10e * log(*x) ); 18 | } 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_log.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double log(); 5 | double d_log(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_log(doublereal *x) 13 | #endif 14 | { 15 | return( log(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_mod.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | #ifdef IEEE_drem 5 | double drem(); 6 | #else 7 | double floor(); 8 | #endif 9 | double d_mod(x,y) doublereal *x, *y; 10 | #else 11 | #ifdef IEEE_drem 12 | double drem(double, double); 13 | #else 14 | #undef abs 15 | #include "math.h" 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | #endif 20 | double d_mod(doublereal *x, doublereal *y) 21 | #endif 22 | { 23 | #ifdef IEEE_drem 24 | double xa, ya, z; 25 | if ((ya = *y) < 0.) 26 | ya = -ya; 27 | z = drem(xa = *x, ya); 28 | if (xa > 0) { 29 | if (z < 0) 30 | z += ya; 31 | } 32 | else if (z > 0) 33 | z -= ya; 34 | return z; 35 | #else 36 | double quotient; 37 | if( (quotient = *x / *y) >= 0) 38 | quotient = floor(quotient); 39 | else 40 | quotient = -floor(-quotient); 41 | return(*x - (*y) * quotient ); 42 | #endif 43 | } 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_nint.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | double d_nint(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_nint(doublereal *x) 13 | #endif 14 | { 15 | return( (*x)>=0 ? 16 | floor(*x + .5) : -floor(.5 - *x) ); 17 | } 18 | #ifdef __cplusplus 19 | } 20 | #endif 21 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_prod.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double d_prod(x,y) real *x, *y; 8 | #else 9 | double d_prod(real *x, real *y) 10 | #endif 11 | { 12 | return( (*x) * (*y) ); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_sign.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double d_sign(a,b) doublereal *a, *b; 8 | #else 9 | double d_sign(doublereal *a, doublereal *b) 10 | #endif 11 | { 12 | double x; 13 | x = (*a >= 0 ? *a : - *a); 14 | return( *b >= 0 ? x : -x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_sin.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sin(); 5 | double d_sin(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_sin(doublereal *x) 13 | #endif 14 | { 15 | return( sin(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_sinh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sinh(); 5 | double d_sinh(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_sinh(doublereal *x) 13 | #endif 14 | { 15 | return( sinh(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_sqrt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sqrt(); 5 | double d_sqrt(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_sqrt(doublereal *x) 13 | #endif 14 | { 15 | return( sqrt(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_tan.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double tan(); 5 | double d_tan(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_tan(doublereal *x) 13 | #endif 14 | { 15 | return( tan(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_d_tanh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double tanh(); 5 | double d_tanh(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double d_tanh(doublereal *x) 13 | #endif 14 | { 15 | return( tanh(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_derf_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double erf(); 8 | double derf_(x) doublereal *x; 9 | #else 10 | extern double erf(double); 11 | double derf_(doublereal *x) 12 | #endif 13 | { 14 | return( erf(*x) ); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_derfc_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern double erfc(); 8 | 9 | double derfc_(x) doublereal *x; 10 | #else 11 | extern double erfc(double); 12 | 13 | double derfc_(doublereal *x) 14 | #endif 15 | { 16 | return( erfc(*x) ); 17 | } 18 | #ifdef __cplusplus 19 | } 20 | #endif 21 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_dolio.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | #ifdef KR_headers 10 | extern int (*f__lioproc)(); 11 | 12 | integer do_lio(type,number,ptr,len) ftnint *number,*type; char *ptr; ftnlen len; 13 | #else 14 | extern int (*f__lioproc)(ftnint*, char*, ftnlen, ftnint); 15 | 16 | integer do_lio(ftnint *type, ftnint *number, char *ptr, ftnlen len) 17 | #endif 18 | { 19 | return((*f__lioproc)(number,ptr,len,*type)); 20 | } 21 | #ifdef __cplusplus 22 | } 23 | #endif 24 | #ifdef __cplusplus 25 | } 26 | #endif 27 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_ef1asc_.c: -------------------------------------------------------------------------------- 1 | /* EFL support routine to copy string b to string a */ 2 | 3 | #include "f2c.h" 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | 9 | #define M ( (long) (sizeof(long) - 1) ) 10 | #define EVEN(x) ( ( (x)+ M) & (~M) ) 11 | 12 | #ifdef KR_headers 13 | extern VOID s_copy(); 14 | ef1asc_(a, la, b, lb) ftnint *a, *b; ftnlen *la, *lb; 15 | #else 16 | extern void s_copy(char*,char*,ftnlen,ftnlen); 17 | int ef1asc_(ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) 18 | #endif 19 | { 20 | s_copy( (char *)a, (char *)b, EVEN(*la), *lb ); 21 | return 0; /* ignored return value */ 22 | } 23 | #ifdef __cplusplus 24 | } 25 | #endif 26 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_ef1cmc_.c: -------------------------------------------------------------------------------- 1 | /* EFL support routine to compare two character strings */ 2 | 3 | #include "f2c.h" 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | #ifdef KR_headers 9 | extern integer s_cmp(); 10 | integer ef1cmc_(a, la, b, lb) ftnint *a, *b; ftnlen *la, *lb; 11 | #else 12 | extern integer s_cmp(char*,char*,ftnlen,ftnlen); 13 | integer ef1cmc_(ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) 14 | #endif 15 | { 16 | return( s_cmp( (char *)a, (char *)b, *la, *lb) ); 17 | } 18 | #ifdef __cplusplus 19 | } 20 | #endif 21 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_erf_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifndef REAL 7 | #define REAL double 8 | #endif 9 | 10 | #ifdef KR_headers 11 | double erf(); 12 | REAL erf_(x) real *x; 13 | #else 14 | extern double erf(double); 15 | REAL erf_(real *x) 16 | #endif 17 | { 18 | return( erf((double)*x) ); 19 | } 20 | #ifdef __cplusplus 21 | } 22 | #endif 23 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_erfc_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifndef REAL 7 | #define REAL double 8 | #endif 9 | 10 | #ifdef KR_headers 11 | double erfc(); 12 | REAL erfc_(x) real *x; 13 | #else 14 | extern double erfc(double); 15 | REAL erfc_(real *x) 16 | #endif 17 | { 18 | return( erfc((double)*x) ); 19 | } 20 | #ifdef __cplusplus 21 | } 22 | #endif 23 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_etime_.c: -------------------------------------------------------------------------------- 1 | #include "time.h" 2 | 3 | /* [BL] */ 4 | #ifdef WIN32 5 | #define MSDOS 6 | #endif 7 | 8 | #ifdef MSDOS 9 | #undef USE_CLOCK 10 | #define USE_CLOCK 11 | #endif 12 | 13 | #ifndef REAL 14 | #define REAL double 15 | #endif 16 | 17 | #ifndef USE_CLOCK 18 | #define _INCLUDE_POSIX_SOURCE /* for HP-UX */ 19 | #define _INCLUDE_XOPEN_SOURCE /* for HP-UX */ 20 | #include "sys/types.h" 21 | #include "sys/times.h" 22 | #ifdef __cplusplus 23 | extern "C" { 24 | #endif 25 | #endif 26 | 27 | #undef Hz 28 | #ifdef CLK_TCK 29 | #define Hz CLK_TCK 30 | #else 31 | #ifdef HZ 32 | #define Hz HZ 33 | #else 34 | #define Hz 60 35 | #endif 36 | #endif 37 | 38 | REAL 39 | #ifdef KR_headers 40 | etime_(tarray) float *tarray; 41 | #else 42 | etime_(float *tarray) 43 | #endif 44 | { 45 | #ifdef USE_CLOCK 46 | #ifndef CLOCKS_PER_SECOND 47 | #define CLOCKS_PER_SECOND Hz 48 | #endif 49 | double t = clock(); 50 | tarray[1] = 0; 51 | return tarray[0] = t / CLOCKS_PER_SECOND; 52 | #else 53 | struct tms t; 54 | 55 | times(&t); 56 | return (tarray[0] = (double)t.tms_utime/Hz) 57 | + (tarray[1] = (double)t.tms_stime/Hz); 58 | #endif 59 | } 60 | #ifdef __cplusplus 61 | } 62 | #endif 63 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_exit_.c: -------------------------------------------------------------------------------- 1 | /* This gives the effect of 2 | 3 | subroutine exit(rc) 4 | integer*4 rc 5 | stop 6 | end 7 | 8 | * with the added side effect of supplying rc as the program's exit code. 9 | */ 10 | 11 | #include "f2c.h" 12 | #undef abs 13 | #undef min 14 | #undef max 15 | #ifndef KR_headers 16 | #include "stdlib.h" 17 | #ifdef __cplusplus 18 | extern "C" { 19 | #endif 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | extern void f_exit(void); 24 | #endif 25 | 26 | void 27 | #ifdef KR_headers 28 | exit_(rc) integer *rc; 29 | #else 30 | exit_(integer *rc) 31 | #endif 32 | { 33 | #ifdef NO_ONEXIT 34 | f_exit(); 35 | #endif 36 | exit(*rc); 37 | } 38 | #ifdef __cplusplus 39 | } 40 | #endif 41 | #ifdef __cplusplus 42 | } 43 | #endif 44 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_f77_aloc.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #undef abs 3 | #undef min 4 | #undef max 5 | #include "stdio.h" 6 | 7 | static integer memfailure = 3; 8 | 9 | #ifdef KR_headers 10 | extern char *malloc(); 11 | extern void exit_(); 12 | 13 | char * 14 | F77_aloc(Len, whence) integer Len; char *whence; 15 | #else 16 | #include "stdlib.h" 17 | #ifdef __cplusplus 18 | extern "C" { 19 | #endif 20 | #ifdef __cplusplus 21 | extern "C" { 22 | #endif 23 | extern void exit_(integer*); 24 | #ifdef __cplusplus 25 | } 26 | #endif 27 | 28 | char * 29 | F77_aloc(integer Len, const char *whence) 30 | #endif 31 | { 32 | char *rv; 33 | unsigned int uLen = (unsigned int) Len; /* for K&R C */ 34 | 35 | if (!(rv = (char*)malloc(uLen))) { 36 | fprintf(stderr, "malloc(%u) failure in %s\n", 37 | uLen, whence); 38 | exit_(&memfailure); 39 | } 40 | return rv; 41 | } 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_fmtlib.c: -------------------------------------------------------------------------------- 1 | /* @(#)fmtlib.c 1.2 */ 2 | #define MAXINTLENGTH 23 3 | 4 | #include "f2c.h" 5 | #ifdef __cplusplus 6 | extern "C" { 7 | #endif 8 | #ifndef Allow_TYQUAD 9 | #undef longint 10 | #define longint long 11 | #undef ulongint 12 | #define ulongint unsigned long 13 | #endif 14 | 15 | #ifdef KR_headers 16 | char *f__icvt(value,ndigit,sign, base) longint value; int *ndigit,*sign; 17 | register int base; 18 | #else 19 | char *f__icvt(longint value, int *ndigit, int *sign, int base) 20 | #endif 21 | { 22 | static char buf[MAXINTLENGTH+1]; 23 | register int i; 24 | ulongint uvalue; 25 | 26 | if(value > 0) { 27 | uvalue = value; 28 | *sign = 0; 29 | } 30 | else if (value < 0) { 31 | uvalue = -value; 32 | *sign = 1; 33 | } 34 | else { 35 | *sign = 0; 36 | *ndigit = 1; 37 | buf[MAXINTLENGTH-1] = '0'; 38 | return &buf[MAXINTLENGTH-1]; 39 | } 40 | i = MAXINTLENGTH; 41 | do { 42 | buf[--i] = (uvalue%base) + '0'; 43 | uvalue /= base; 44 | } 45 | while(uvalue > 0); 46 | *ndigit = MAXINTLENGTH - i; 47 | return &buf[i]; 48 | } 49 | #ifdef __cplusplus 50 | } 51 | #endif 52 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_ftell_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #include "fio.h" 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | 7 | static FILE * 8 | #ifdef KR_headers 9 | unit_chk(Unit, who) integer Unit; char *who; 10 | #else 11 | unit_chk(integer Unit, const char *who) 12 | #endif 13 | { 14 | if (Unit >= MXUNIT || Unit < 0) 15 | f__fatal(101, who); 16 | return f__units[Unit].ufd; 17 | } 18 | 19 | integer 20 | #ifdef KR_headers 21 | ftell_(Unit) integer *Unit; 22 | #else 23 | ftell_(integer *Unit) 24 | #endif 25 | { 26 | FILE *f; 27 | return (f = unit_chk(*Unit, "ftell")) ? ftell(f) : -1L; 28 | } 29 | 30 | int 31 | #ifdef KR_headers 32 | fseek_(Unit, offset, whence) integer *Unit, *offset, *whence; 33 | #else 34 | fseek_(integer *Unit, integer *offset, integer *whence) 35 | #endif 36 | { 37 | FILE *f; 38 | int w = (int)*whence; 39 | #ifdef SEEK_SET 40 | static int wohin[3] = { SEEK_SET, SEEK_CUR, SEEK_END }; 41 | #endif 42 | if (w < 0 || w > 2) 43 | w = 0; 44 | #ifdef SEEK_SET 45 | w = wohin[w]; 46 | #endif 47 | return !(f = unit_chk(*Unit, "fseek")) 48 | || fseek(f, *offset, w) ? 1 : 0; 49 | } 50 | #ifdef __cplusplus 51 | } 52 | #endif 53 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_getarg_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | /* 7 | * subroutine getarg(k, c) 8 | * returns the kth unix command argument in fortran character 9 | * variable argument c 10 | */ 11 | 12 | #ifdef KR_headers 13 | VOID getarg_(n, s, ls) ftnint *n; char *s; ftnlen ls; 14 | #define Const /*nothing*/ 15 | #else 16 | #define Const const 17 | void getarg_(ftnint *n, char *s, ftnlen ls) 18 | #endif 19 | { 20 | extern int xargc; 21 | extern char **xargv; 22 | Const char *t; 23 | int i; 24 | 25 | if(*n>=0 && *n= 0) 13 | return(*x); 14 | return(- *x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_dim.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | shortint h_dim(a,b) shortint *a, *b; 8 | #else 9 | shortint h_dim(shortint *a, shortint *b) 10 | #endif 11 | { 12 | return( *a > *b ? *a - *b : 0); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_dnnt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | shortint h_dnnt(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | shortint h_dnnt(doublereal *x) 13 | #endif 14 | { 15 | return (shortint)(*x >= 0. ? floor(*x + .5) : -floor(.5 - *x)); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_indx.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | shortint h_indx(a, b, la, lb) char *a, *b; ftnlen la, lb; 8 | #else 9 | shortint h_indx(char *a, char *b, ftnlen la, ftnlen lb) 10 | #endif 11 | { 12 | ftnlen i, n; 13 | char *s, *t, *bend; 14 | 15 | n = la - lb + 1; 16 | bend = b + lb; 17 | 18 | for(i = 0 ; i < n ; ++i) 19 | { 20 | s = a + i; 21 | t = b; 22 | while(t < bend) 23 | if(*s++ != *t++) 24 | goto no; 25 | return((shortint)i+1); 26 | no: ; 27 | } 28 | return(0); 29 | } 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_len.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | shortint h_len(s, n) char *s; ftnlen n; 8 | #else 9 | shortint h_len(char *s, ftnlen n) 10 | #endif 11 | { 12 | return(n); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_mod.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | shortint h_mod(a,b) short *a, *b; 8 | #else 9 | shortint h_mod(short *a, short *b) 10 | #endif 11 | { 12 | return( *a % *b); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_nint.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | shortint h_nint(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | shortint h_nint(real *x) 13 | #endif 14 | { 15 | return (shortint)(*x >= 0 ? floor(*x + .5) : -floor(.5 - *x)); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_h_sign.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | shortint h_sign(a,b) shortint *a, *b; 8 | #else 9 | shortint h_sign(shortint *a, shortint *b) 10 | #endif 11 | { 12 | shortint x; 13 | x = (*a >= 0 ? *a : - *a); 14 | return( *b >= 0 ? x : -x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_hl_ge.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | shortlogical hl_ge(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | shortlogical hl_ge(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) >= 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_hl_gt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | shortlogical hl_gt(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | shortlogical hl_gt(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) > 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_hl_le.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | shortlogical hl_le(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | shortlogical hl_le(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) <= 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_hl_lt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | shortlogical hl_lt(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | shortlogical hl_lt(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) < 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_abs.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_abs(x) integer *x; 8 | #else 9 | integer i_abs(integer *x) 10 | #endif 11 | { 12 | if(*x >= 0) 13 | return(*x); 14 | return(- *x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_ceiling.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | integer i_sceiling(x) real *x; 5 | #else 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | integer i_sceiling(real *x) 10 | #endif 11 | { 12 | #define CEIL(x) ((int)(x) + ((x) > 0 && (x) != (int)(x))) 13 | 14 | return (integer) CEIL(*x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | 20 | 21 | #ifdef KR_headers 22 | integer i_dceiling(x) doublereal *x; 23 | #else 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | integer i_dceiling(doublereal *x) 28 | #endif 29 | { 30 | #define CEIL(x) ((int)(x) + ((x) > 0 && (x) != (int)(x))) 31 | 32 | return (integer) CEIL(*x); 33 | } 34 | #ifdef __cplusplus 35 | } 36 | #endif 37 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_dim.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_dim(a,b) integer *a, *b; 8 | #else 9 | integer i_dim(integer *a, integer *b) 10 | #endif 11 | { 12 | return( *a > *b ? *a - *b : 0); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_dnnt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | integer i_dnnt(x) doublereal *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | integer i_dnnt(doublereal *x) 13 | #endif 14 | { 15 | return (integer)(*x >= 0. ? floor(*x + .5) : -floor(.5 - *x)); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_indx.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_indx(a, b, la, lb) char *a, *b; ftnlen la, lb; 8 | #else 9 | integer i_indx(char *a, char *b, ftnlen la, ftnlen lb) 10 | #endif 11 | { 12 | ftnlen i, n; 13 | char *s, *t, *bend; 14 | 15 | n = la - lb + 1; 16 | bend = b + lb; 17 | 18 | for(i = 0 ; i < n ; ++i) 19 | { 20 | s = a + i; 21 | t = b; 22 | while(t < bend) 23 | if(*s++ != *t++) 24 | goto no; 25 | return(i+1); 26 | no: ; 27 | } 28 | return(0); 29 | } 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_len.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_len(s, n) char *s; ftnlen n; 8 | #else 9 | integer i_len(char *s, ftnlen n) 10 | #endif 11 | { 12 | return(n); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_len_trim.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_len_trim(s, n) char *s; ftnlen n; 8 | #else 9 | integer i_len_trim(char *s, ftnlen n) 10 | #endif 11 | { 12 | int i; 13 | 14 | for(i=n-1;i>=0;i--) 15 | if(s[i] != ' ') 16 | return i + 1; 17 | 18 | return(0); 19 | } 20 | #ifdef __cplusplus 21 | } 22 | #endif 23 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_mod.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_mod(a,b) integer *a, *b; 8 | #else 9 | integer i_mod(integer *a, integer *b) 10 | #endif 11 | { 12 | return( *a % *b); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_nint.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | integer i_nint(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | integer i_nint(real *x) 13 | #endif 14 | { 15 | return (integer)(*x >= 0 ? floor(*x + .5) : -floor(.5 - *x)); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_i_sign.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer i_sign(a,b) integer *a, *b; 8 | #else 9 | integer i_sign(integer *a, integer *b) 10 | #endif 11 | { 12 | integer x; 13 | x = (*a >= 0 ? *a : - *a); 14 | return( *b >= 0 ? x : -x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_iargc_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | ftnint iargc_() 8 | #else 9 | ftnint iargc_(void) 10 | #endif 11 | { 12 | extern int xargc; 13 | return ( xargc - 1 ); 14 | } 15 | #ifdef __cplusplus 16 | } 17 | #endif 18 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_l_ge.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | logical l_ge(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | logical l_ge(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) >= 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_l_gt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | logical l_gt(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | logical l_gt(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) > 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_l_le.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | logical l_le(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | logical l_le(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) <= 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_l_lt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern integer s_cmp(); 8 | logical l_lt(a,b,la,lb) char *a, *b; ftnlen la, lb; 9 | #else 10 | extern integer s_cmp(char *, char *, ftnlen, ftnlen); 11 | logical l_lt(char *a, char *b, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | return(s_cmp(a,b,la,lb) < 0); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_lbitshft.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | integer 7 | #ifdef KR_headers 8 | lbit_shift(a, b) integer a; integer b; 9 | #else 10 | lbit_shift(integer a, integer b) 11 | #endif 12 | { 13 | return b >= 0 ? a << b : (integer)((uinteger)a >> -b); 14 | } 15 | #ifdef __cplusplus 16 | } 17 | #endif 18 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_missing_erf.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | 4 | /* 5 | * VisualC++ versions older than MSVC2013 6 | * do not have erf() and erfc(), 7 | * therefore we include here an implementation. 8 | */ 9 | #ifdef _MSC_VER 10 | #if _MSC_VER < 1800 11 | #define MISSING_ERF 12 | #endif 13 | #endif 14 | 15 | 16 | #ifdef MISSING_ERF 17 | 18 | /* 19 | * grabbed from: 20 | * http://www.johndcook.com/blog/cpp_erf/ 21 | * License: BSD 22 | */ 23 | double erf(double x) { 24 | /* constants */ 25 | double a1 = 0.254829592; 26 | double a2 = -0.284496736; 27 | double a3 = 1.421413741; 28 | double a4 = -1.453152027; 29 | double a5 = 1.061405429; 30 | double p = 0.3275911; 31 | 32 | /* Save the sign of x */ 33 | int sign = 1; 34 | double t,y; 35 | 36 | if (x < 0) 37 | sign = -1; 38 | x = fabs(x); 39 | 40 | /* A&S formula 7.1.26 */ 41 | t = 1.0/(1.0 + p*x); 42 | y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x); 43 | 44 | return sign*y; 45 | } 46 | 47 | double erfc(double x) { 48 | return 1.0 - erf(x); 49 | } 50 | 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_ci.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | VOID pow_ci(p, a, b) /* p = a**b */ 8 | complex *p, *a; integer *b; 9 | #else 10 | extern void pow_zi(doublecomplex*, doublecomplex*, integer*); 11 | void pow_ci(complex *p, complex *a, integer *b) /* p = a**b */ 12 | #endif 13 | { 14 | doublecomplex p1, a1; 15 | 16 | a1.r = a->r; 17 | a1.i = a->i; 18 | 19 | pow_zi(&p1, &a1, b); 20 | 21 | p->r = p1.r; 22 | p->i = p1.i; 23 | } 24 | #ifdef __cplusplus 25 | } 26 | #endif 27 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_dd.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double pow(); 5 | double pow_dd(ap, bp) doublereal *ap, *bp; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double pow_dd(doublereal *ap, doublereal *bp) 13 | #endif 14 | { 15 | return(pow(*ap, *bp) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_di.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double pow_di(ap, bp) doublereal *ap; integer *bp; 8 | #else 9 | double pow_di(doublereal *ap, integer *bp) 10 | #endif 11 | { 12 | double pow, x; 13 | integer n; 14 | unsigned long u; 15 | 16 | pow = 1; 17 | x = *ap; 18 | n = *bp; 19 | 20 | if(n != 0) 21 | { 22 | if(n < 0) 23 | { 24 | n = -n; 25 | x = 1/x; 26 | } 27 | for(u = n; ; ) 28 | { 29 | if(u & 01) 30 | pow *= x; 31 | if(u >>= 1) 32 | x *= x; 33 | else 34 | break; 35 | } 36 | } 37 | return(pow); 38 | } 39 | #ifdef __cplusplus 40 | } 41 | #endif 42 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_hh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | shortint pow_hh(ap, bp) shortint *ap, *bp; 8 | #else 9 | shortint pow_hh(shortint *ap, shortint *bp) 10 | #endif 11 | { 12 | shortint pow, x, n; 13 | unsigned u; 14 | 15 | x = *ap; 16 | n = *bp; 17 | 18 | if (n <= 0) { 19 | if (n == 0 || x == 1) 20 | return 1; 21 | if (x != -1) 22 | return x == 0 ? 1/x : 0; 23 | n = -n; 24 | } 25 | u = n; 26 | for(pow = 1; ; ) 27 | { 28 | if(u & 01) 29 | pow *= x; 30 | if(u >>= 1) 31 | x *= x; 32 | else 33 | break; 34 | } 35 | return(pow); 36 | } 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_ii.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | integer pow_ii(ap, bp) integer *ap, *bp; 8 | #else 9 | integer pow_ii(integer *ap, integer *bp) 10 | #endif 11 | { 12 | integer pow, x, n; 13 | unsigned long u; 14 | 15 | x = *ap; 16 | n = *bp; 17 | 18 | if (n <= 0) { 19 | if (n == 0 || x == 1) 20 | return 1; 21 | if (x != -1) 22 | return x == 0 ? 1/x : 0; 23 | n = -n; 24 | } 25 | u = n; 26 | for(pow = 1; ; ) 27 | { 28 | if(u & 01) 29 | pow *= x; 30 | if(u >>= 1) 31 | x *= x; 32 | else 33 | break; 34 | } 35 | return(pow); 36 | } 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_ri.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double pow_ri(ap, bp) real *ap; integer *bp; 8 | #else 9 | double pow_ri(real *ap, integer *bp) 10 | #endif 11 | { 12 | double pow, x; 13 | integer n; 14 | unsigned long u; 15 | 16 | pow = 1; 17 | x = *ap; 18 | n = *bp; 19 | 20 | if(n != 0) 21 | { 22 | if(n < 0) 23 | { 24 | n = -n; 25 | x = 1/x; 26 | } 27 | for(u = n; ; ) 28 | { 29 | if(u & 01) 30 | pow *= x; 31 | if(u >>= 1) 32 | x *= x; 33 | else 34 | break; 35 | } 36 | } 37 | return(pow); 38 | } 39 | #ifdef __cplusplus 40 | } 41 | #endif 42 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_zi.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | VOID pow_zi(p, a, b) /* p = a**b */ 8 | doublecomplex *p, *a; integer *b; 9 | #else 10 | extern void z_div(doublecomplex*, doublecomplex*, doublecomplex*); 11 | void pow_zi(doublecomplex *p, doublecomplex *a, integer *b) /* p = a**b */ 12 | #endif 13 | { 14 | integer n; 15 | unsigned long u; 16 | double t; 17 | doublecomplex q, x; 18 | static doublecomplex one = {1.0, 0.0}; 19 | 20 | n = *b; 21 | q.r = 1; 22 | q.i = 0; 23 | 24 | if(n == 0) 25 | goto done; 26 | if(n < 0) 27 | { 28 | n = -n; 29 | z_div(&x, &one, a); 30 | } 31 | else 32 | { 33 | x.r = a->r; 34 | x.i = a->i; 35 | } 36 | 37 | for(u = n; ; ) 38 | { 39 | if(u & 01) 40 | { 41 | t = q.r * x.r - q.i * x.i; 42 | q.i = q.r * x.i + q.i * x.r; 43 | q.r = t; 44 | } 45 | if(u >>= 1) 46 | { 47 | t = x.r * x.r - x.i * x.i; 48 | x.i = 2 * x.r * x.i; 49 | x.r = t; 50 | } 51 | else 52 | break; 53 | } 54 | done: 55 | p->i = q.i; 56 | p->r = q.r; 57 | } 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_pow_zz.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double log(), exp(), cos(), sin(), atan2(), f__cabs(); 5 | VOID pow_zz(r,a,b) doublecomplex *r, *a, *b; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | extern double f__cabs(double,double); 13 | void pow_zz(doublecomplex *r, doublecomplex *a, doublecomplex *b) 14 | #endif 15 | { 16 | double logr, logi, x, y; 17 | 18 | logr = log( f__cabs(a->r, a->i) ); 19 | logi = atan2(a->i, a->r); 20 | 21 | x = exp( logr * b->r - logi * b->i ); 22 | y = logr * b->i + logi * b->r; 23 | 24 | r->r = x * cos(y); 25 | r->i = x * sin(y); 26 | } 27 | #ifdef __cplusplus 28 | } 29 | #endif 30 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_abs.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double r_abs(x) real *x; 8 | #else 9 | double r_abs(real *x) 10 | #endif 11 | { 12 | if(*x >= 0) 13 | return(*x); 14 | return(- *x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_acos.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double acos(); 5 | double r_acos(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_acos(real *x) 13 | #endif 14 | { 15 | return( acos(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_asin.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double asin(); 5 | double r_asin(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_asin(real *x) 13 | #endif 14 | { 15 | return( asin(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_atan.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double atan(); 5 | double r_atan(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_atan(real *x) 13 | #endif 14 | { 15 | return( atan(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_atn2.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double atan2(); 5 | double r_atn2(x,y) real *x, *y; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_atn2(real *x, real *y) 13 | #endif 14 | { 15 | return( atan2(*x,*y) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_cnjg.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | VOID r_cnjg(r, z) complex *r, *z; 8 | #else 9 | VOID r_cnjg(complex *r, complex *z) 10 | #endif 11 | { 12 | real zi = z->i; 13 | r->r = z->r; 14 | r->i = -zi; 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_cos.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double cos(); 5 | double r_cos(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_cos(real *x) 13 | #endif 14 | { 15 | return( cos(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_cosh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double cosh(); 5 | double r_cosh(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_cosh(real *x) 13 | #endif 14 | { 15 | return( cosh(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_dim.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double r_dim(a,b) real *a, *b; 8 | #else 9 | double r_dim(real *a, real *b) 10 | #endif 11 | { 12 | return( *a > *b ? *a - *b : 0); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_exp.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double exp(); 5 | double r_exp(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_exp(real *x) 13 | #endif 14 | { 15 | return( exp(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_imag.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double r_imag(z) complex *z; 8 | #else 9 | double r_imag(complex *z) 10 | #endif 11 | { 12 | return(z->i); 13 | } 14 | #ifdef __cplusplus 15 | } 16 | #endif 17 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_int.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | double r_int(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_int(real *x) 13 | #endif 14 | { 15 | return( (*x>0) ? floor(*x) : -floor(- *x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_lg10.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #define log10e 0.43429448190325182765 4 | 5 | #ifdef KR_headers 6 | double log(); 7 | double r_lg10(x) real *x; 8 | #else 9 | #undef abs 10 | #include "math.h" 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | double r_lg10(real *x) 15 | #endif 16 | { 17 | return( log10e * log(*x) ); 18 | } 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_log.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double log(); 5 | double r_log(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_log(real *x) 13 | #endif 14 | { 15 | return( log(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_mod.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | #ifdef IEEE_drem 5 | double drem(); 6 | #else 7 | double floor(); 8 | #endif 9 | double r_mod(x,y) real *x, *y; 10 | #else 11 | #ifdef IEEE_drem 12 | double drem(double, double); 13 | #else 14 | #undef abs 15 | #include "math.h" 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | #endif 20 | double r_mod(real *x, real *y) 21 | #endif 22 | { 23 | #ifdef IEEE_drem 24 | double xa, ya, z; 25 | if ((ya = *y) < 0.) 26 | ya = -ya; 27 | z = drem(xa = *x, ya); 28 | if (xa > 0) { 29 | if (z < 0) 30 | z += ya; 31 | } 32 | else if (z > 0) 33 | z -= ya; 34 | return z; 35 | #else 36 | double quotient; 37 | if( (quotient = (double)*x / *y) >= 0) 38 | quotient = floor(quotient); 39 | else 40 | quotient = -floor(-quotient); 41 | return(*x - (*y) * quotient ); 42 | #endif 43 | } 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_nint.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double floor(); 5 | double r_nint(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_nint(real *x) 13 | #endif 14 | { 15 | return( (*x)>=0 ? 16 | floor(*x + .5) : -floor(.5 - *x) ); 17 | } 18 | #ifdef __cplusplus 19 | } 20 | #endif 21 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_sign.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double r_sign(a,b) real *a, *b; 8 | #else 9 | double r_sign(real *a, real *b) 10 | #endif 11 | { 12 | double x; 13 | x = (*a >= 0 ? *a : - *a); 14 | return( *b >= 0 ? x : -x); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_sin.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sin(); 5 | double r_sin(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_sin(real *x) 13 | #endif 14 | { 15 | return( sin(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_sinh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sinh(); 5 | double r_sinh(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_sinh(real *x) 13 | #endif 14 | { 15 | return( sinh(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_sqrt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sqrt(); 5 | double r_sqrt(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_sqrt(real *x) 13 | #endif 14 | { 15 | return( sqrt(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_tan.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double tan(); 5 | double r_tan(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_tan(real *x) 13 | #endif 14 | { 15 | return( tan(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_r_tanh.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double tanh(); 5 | double r_tanh(x) real *x; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | double r_tanh(real *x) 13 | #endif 14 | { 15 | return( tanh(*x) ); 16 | } 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_rewind.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #include "fio.h" 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | #ifdef KR_headers 7 | integer f_rew(a) alist *a; 8 | #else 9 | integer f_rew(alist *a) 10 | #endif 11 | { 12 | unit *b; 13 | if(a->aunit>=MXUNIT || a->aunit<0) 14 | err(a->aerr,101,"rewind"); 15 | b = &f__units[a->aunit]; 16 | if(b->ufd == NULL || b->uwrt == 3) 17 | return(0); 18 | if(!b->useek) 19 | err(a->aerr,106,"rewind") 20 | if(b->uwrt) { 21 | (void) t_runc(a); 22 | b->uwrt = 3; 23 | } 24 | rewind(b->ufd); 25 | b->uend=0; 26 | return(0); 27 | } 28 | #ifdef __cplusplus 29 | } 30 | #endif 31 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_s_cmp.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | /* compare two strings */ 7 | 8 | #ifdef KR_headers 9 | integer s_cmp(a0, b0, la, lb) char *a0, *b0; ftnlen la, lb; 10 | #else 11 | integer s_cmp(char *a0, char *b0, ftnlen la, ftnlen lb) 12 | #endif 13 | { 14 | register unsigned char *a, *aend, *b, *bend; 15 | a = (unsigned char *)a0; 16 | b = (unsigned char *)b0; 17 | aend = a + la; 18 | bend = b + lb; 19 | 20 | if(la <= lb) 21 | { 22 | while(a < aend) 23 | if(*a != *b) 24 | return( *a - *b ); 25 | else 26 | { ++a; ++b; } 27 | 28 | while(b < bend) 29 | if(*b != ' ') 30 | return( ' ' - *b ); 31 | else ++b; 32 | } 33 | 34 | else 35 | { 36 | while(b < bend) 37 | if(*a == *b) 38 | { ++a; ++b; } 39 | else 40 | return( *a - *b ); 41 | while(a < aend) 42 | if(*a != ' ') 43 | return(*a - ' '); 44 | else ++a; 45 | } 46 | return(0); 47 | } 48 | #ifdef __cplusplus 49 | } 50 | #endif 51 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_s_rnge.c: -------------------------------------------------------------------------------- 1 | #include "stdio.h" 2 | #include "f2c.h" 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | 7 | /* called when a subscript is out of range */ 8 | 9 | #ifdef KR_headers 10 | extern VOID sig_die(); 11 | integer s_rnge(varn, offset, procn, line) char *varn, *procn; ftnint offset, line; 12 | #else 13 | extern VOID sig_die(const char*,int); 14 | integer s_rnge(char *varn, ftnint offset, char *procn, ftnint line) 15 | #endif 16 | { 17 | register int i; 18 | 19 | fprintf(stderr, "Subscript out of range on file line %ld, procedure ", 20 | (long)line); 21 | while((i = *procn) && i != '_' && i != ' ') 22 | putc(*procn++, stderr); 23 | fprintf(stderr, ".\nAttempt to access the %ld-th element of variable ", 24 | (long)offset+1); 25 | while((i = *varn) && i != ' ') 26 | putc(*varn++, stderr); 27 | sig_die(".", 1); 28 | return 0; /* not reached */ 29 | } 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_s_stop.c: -------------------------------------------------------------------------------- 1 | #include "stdio.h" 2 | #include "f2c.h" 3 | 4 | #ifdef KR_headers 5 | extern void f_exit(); 6 | int s_stop(s, n) char *s; ftnlen n; 7 | #else 8 | #undef abs 9 | #undef min 10 | #undef max 11 | #include "stdlib.h" 12 | #ifdef __cplusplus 13 | extern "C" { 14 | #endif 15 | #ifdef __cplusplus 16 | extern "C" { 17 | #endif 18 | void f_exit(void); 19 | 20 | int s_stop(char *s, ftnlen n) 21 | #endif 22 | { 23 | int i; 24 | 25 | if(n > 0) 26 | { 27 | fprintf(stderr, "STOP "); 28 | for(i = 0; iciunit]; 29 | if(a->ciunit >= MXUNIT || a->ciunit<0) 30 | err(a->cierr,101,"startio"); 31 | if(p->ufd==NULL && fk_open(SEQ,FMT,a->ciunit)) err(a->cierr,114,"sfe") 32 | if(!p->ufmt) err(a->cierr,102,"sfe") 33 | return(0); 34 | } 35 | integer e_wsfe(Void) 36 | { 37 | int n = en_fio(); 38 | f__fmtbuf = NULL; 39 | #ifdef ALWAYS_FLUSH 40 | if (!n && fflush(f__cf)) 41 | err(f__elist->cierr, errno, "write end"); 42 | #endif 43 | return n; 44 | } 45 | #ifdef __cplusplus 46 | } 47 | #endif 48 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_sig_die.c: -------------------------------------------------------------------------------- 1 | #include "stdio.h" 2 | #include "signal.h" 3 | 4 | #ifndef SIGIOT 5 | #ifdef SIGABRT 6 | #define SIGIOT SIGABRT 7 | #endif 8 | #endif 9 | 10 | #ifdef KR_headers 11 | void sig_die(s, kill) char *s; int kill; 12 | #else 13 | #include "stdlib.h" 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | #ifdef __cplusplus 18 | extern "C" { 19 | #endif 20 | extern void f_exit(void); 21 | 22 | void sig_die(const char *s, int kill) 23 | #endif 24 | { 25 | /* print error message, then clear buffers */ 26 | fprintf(stderr, "%s\n", s); 27 | 28 | if(kill) 29 | { 30 | fflush(stderr); 31 | f_exit(); 32 | fflush(stderr); 33 | /* now get a core */ 34 | #ifdef SIGIOT 35 | signal(SIGIOT, SIG_DFL); 36 | #endif 37 | abort(); 38 | } 39 | else { 40 | #ifdef NO_ONEXIT 41 | f_exit(); 42 | #endif 43 | exit(1); 44 | } 45 | } 46 | #ifdef __cplusplus 47 | } 48 | #endif 49 | #ifdef __cplusplus 50 | } 51 | #endif 52 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_signal_.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #include "signal1.h" 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | 7 | ftnint 8 | #ifdef KR_headers 9 | signal_(sigp, proc) integer *sigp; sig_pf proc; 10 | #else 11 | signal_(integer *sigp, sig_pf proc) 12 | #endif 13 | { 14 | int sig; 15 | sig = (int)*sigp; 16 | 17 | return (ftnint)signal(sig, proc); 18 | } 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_signbit.c: -------------------------------------------------------------------------------- 1 | #include "arith.h" 2 | 3 | #ifndef Long 4 | #define Long long 5 | #endif 6 | 7 | int 8 | #ifdef KR_headers 9 | signbit_f2c(x) double *x; 10 | #else 11 | signbit_f2c(double *x) 12 | #endif 13 | { 14 | #ifdef IEEE_MC68k 15 | if (*(Long*)x & 0x80000000) 16 | return 1; 17 | #else 18 | #ifdef IEEE_8087 19 | if (((Long*)x)[1] & 0x80000000) 20 | return 1; 21 | #endif /*IEEE_8087*/ 22 | #endif /*IEEE_MC68k*/ 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_system_.c: -------------------------------------------------------------------------------- 1 | /* f77 interface to system routine */ 2 | 3 | #include "f2c.h" 4 | 5 | #ifdef KR_headers 6 | extern char *F77_aloc(); 7 | 8 | integer 9 | system_(s, n) register char *s; ftnlen n; 10 | #else 11 | #undef abs 12 | #undef min 13 | #undef max 14 | #include "stdlib.h" 15 | #ifdef __cplusplus 16 | extern "C" { 17 | #endif 18 | extern char *F77_aloc(ftnlen, const char*); 19 | 20 | integer 21 | system_(register char *s, ftnlen n) 22 | #endif 23 | { 24 | char buff0[256], *buff; 25 | register char *bp, *blast; 26 | integer rv; 27 | 28 | buff = bp = n < sizeof(buff0) 29 | ? buff0 : F77_aloc(n+1, "system_"); 30 | blast = bp + n; 31 | 32 | while(bp < blast && *s) 33 | *bp++ = *s++; 34 | *bp = 0; 35 | rv = system(buff); 36 | if (buff != buff0) 37 | free(buff); 38 | return rv; 39 | } 40 | #ifdef __cplusplus 41 | } 42 | #endif 43 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_typesize.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | ftnlen f__typesize[] = { 0, 0, sizeof(shortint), sizeof(integer), 7 | sizeof(real), sizeof(doublereal), 8 | sizeof(complex), sizeof(doublecomplex), 9 | sizeof(logical), sizeof(char), 10 | 0, sizeof(integer1), 11 | sizeof(logical1), sizeof(shortlogical), 12 | #ifdef Allow_TYQUAD 13 | sizeof(longint), 14 | #endif 15 | 0}; 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_wsle.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #include "fio.h" 3 | #include "fmt.h" 4 | #include "lio.h" 5 | #include "string.h" 6 | #ifdef __cplusplus 7 | extern "C" { 8 | #endif 9 | 10 | #ifdef KR_headers 11 | integer s_wsle(a) cilist *a; 12 | #else 13 | integer s_wsle(cilist *a) 14 | #endif 15 | { 16 | int n; 17 | if(n=c_le(a)) return(n); 18 | f__reading=0; 19 | f__external=1; 20 | f__formatted=1; 21 | f__putn = x_putc; 22 | f__lioproc = l_write; 23 | L_len = LINE; 24 | f__donewrec = x_wSL; 25 | if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit)) 26 | err(a->cierr, errno, "list output start"); 27 | return(0); 28 | } 29 | 30 | integer e_wsle(Void) 31 | { 32 | int n = f__putbuf('\n'); 33 | f__recpos=0; 34 | #ifdef ALWAYS_FLUSH 35 | if (!n && fflush(f__cf)) 36 | err(f__elist->cierr, errno, "write end"); 37 | #endif 38 | return(n); 39 | } 40 | #ifdef __cplusplus 41 | } 42 | #endif 43 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_wsne.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #include "fio.h" 3 | #include "lio.h" 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | integer 9 | #ifdef KR_headers 10 | s_wsne(a) cilist *a; 11 | #else 12 | s_wsne(cilist *a) 13 | #endif 14 | { 15 | int n; 16 | 17 | if(n=c_le(a)) 18 | return(n); 19 | f__reading=0; 20 | f__external=1; 21 | f__formatted=1; 22 | f__putn = x_putc; 23 | L_len = LINE; 24 | f__donewrec = x_wSL; 25 | if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit)) 26 | err(a->cierr, errno, "namelist output start"); 27 | x_wsne(a); 28 | return e_wsle(); 29 | } 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_z_abs.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | double f__cabs(); 8 | double z_abs(z) doublecomplex *z; 9 | #else 10 | double f__cabs(double, double); 11 | double z_abs(doublecomplex *z) 12 | #endif 13 | { 14 | return( f__cabs( z->r, z->i ) ); 15 | } 16 | #ifdef __cplusplus 17 | } 18 | #endif 19 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_z_cos.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sin(), cos(), sinh(), cosh(); 5 | VOID z_cos(r, z) doublecomplex *r, *z; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | void z_cos(doublecomplex *r, doublecomplex *z) 13 | #endif 14 | { 15 | double zi = z->i, zr = z->r; 16 | r->r = cos(zr) * cosh(zi); 17 | r->i = - sin(zr) * sinh(zi); 18 | } 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_z_div.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | extern VOID sig_die(); 8 | VOID z_div(c, a, b) doublecomplex *a, *b, *c; 9 | #else 10 | extern void sig_die(const char*, int); 11 | void z_div(doublecomplex *c, doublecomplex *a, doublecomplex *b) 12 | #endif 13 | { 14 | double ratio, den; 15 | double abr, abi, cr; 16 | 17 | if( (abr = b->r) < 0.) 18 | abr = - abr; 19 | if( (abi = b->i) < 0.) 20 | abi = - abi; 21 | if( abr <= abi ) 22 | { 23 | if(abi == 0) { 24 | #ifdef IEEE_COMPLEX_DIVIDE 25 | if (a->i != 0 || a->r != 0) 26 | abi = 1.; 27 | c->i = c->r = abi / abr; 28 | return; 29 | #else 30 | sig_die("complex division by zero", 1); 31 | #endif 32 | } 33 | ratio = b->r / b->i ; 34 | den = b->i * (1 + ratio*ratio); 35 | cr = (a->r*ratio + a->i) / den; 36 | c->i = (a->i*ratio - a->r) / den; 37 | } 38 | 39 | else 40 | { 41 | ratio = b->i / b->r ; 42 | den = b->r * (1 + ratio*ratio); 43 | cr = (a->r + a->i*ratio) / den; 44 | c->i = (a->i - a->r*ratio) / den; 45 | } 46 | c->r = cr; 47 | } 48 | #ifdef __cplusplus 49 | } 50 | #endif 51 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_z_exp.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double exp(), cos(), sin(); 5 | VOID z_exp(r, z) doublecomplex *r, *z; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | void z_exp(doublecomplex *r, doublecomplex *z) 13 | #endif 14 | { 15 | double expx, zi = z->i; 16 | 17 | expx = exp(z->r); 18 | r->r = expx * cos(zi); 19 | r->i = expx * sin(zi); 20 | } 21 | #ifdef __cplusplus 22 | } 23 | #endif 24 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_z_sin.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sin(), cos(), sinh(), cosh(); 5 | VOID z_sin(r, z) doublecomplex *r, *z; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | void z_sin(doublecomplex *r, doublecomplex *z) 13 | #endif 14 | { 15 | double zi = z->i, zr = z->r; 16 | r->r = sin(zr) * cosh(zi); 17 | r->i = cos(zr) * sinh(zi); 18 | } 19 | #ifdef __cplusplus 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/libf2c_z_sqrt.c: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | 3 | #ifdef KR_headers 4 | double sqrt(), f__cabs(); 5 | VOID z_sqrt(r, z) doublecomplex *r, *z; 6 | #else 7 | #undef abs 8 | #include "math.h" 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | extern double f__cabs(double, double); 13 | void z_sqrt(doublecomplex *r, doublecomplex *z) 14 | #endif 15 | { 16 | double mag, zi = z->i, zr = z->r; 17 | 18 | if( (mag = f__cabs(zr, zi)) == 0.) 19 | r->r = r->i = 0.; 20 | else if(zr > 0) 21 | { 22 | r->r = sqrt(0.5 * (mag + zr) ); 23 | r->i = zi / r->r / 2; 24 | } 25 | else 26 | { 27 | r->i = sqrt(0.5 * (mag - zr) ); 28 | if(zi < 0) 29 | r->i = - r->i; 30 | r->r = zi / r->i / 2; 31 | } 32 | } 33 | #ifdef __cplusplus 34 | } 35 | #endif 36 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/pow_qq.c.unused: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #ifdef KR_headers 7 | longint pow_qq(ap, bp) longint *ap, *bp; 8 | #else 9 | longint pow_qq(longint *ap, longint *bp) 10 | #endif 11 | { 12 | longint pow, x, n; 13 | unsigned long long u; /* system-dependent */ 14 | 15 | x = *ap; 16 | n = *bp; 17 | 18 | if (n <= 0) { 19 | if (n == 0 || x == 1) 20 | return 1; 21 | if (x != -1) 22 | return x == 0 ? 1/x : 0; 23 | n = -n; 24 | } 25 | u = n; 26 | for(pow = 1; ; ) 27 | { 28 | if(u & 01) 29 | pow *= x; 30 | if(u >>= 1) 31 | x *= x; 32 | else 33 | break; 34 | } 35 | return(pow); 36 | } 37 | #ifdef __cplusplus 38 | } 39 | #endif 40 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/qbitshft.c.unused: -------------------------------------------------------------------------------- 1 | #include "f2c.h" 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | longint 7 | #ifdef KR_headers 8 | qbit_shift(a, b) longint a; integer b; 9 | #else 10 | qbit_shift(longint a, integer b) 11 | #endif 12 | { 13 | return b >= 0 ? a << b : (longint)((ulongint)a >> -b); 14 | } 15 | #ifdef __cplusplus 16 | } 17 | #endif 18 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/rawio.h: -------------------------------------------------------------------------------- 1 | #ifndef KR_headers 2 | #ifdef MSDOS 3 | #include "io.h" 4 | #ifndef WATCOM 5 | #define close _close 6 | #define creat _creat 7 | #define open _open 8 | #define read _read 9 | #define write _write 10 | #endif /*WATCOM*/ 11 | #endif /*MSDOS*/ 12 | #ifdef __cplusplus 13 | extern "C" { 14 | #endif 15 | #ifndef MSDOS 16 | #ifdef OPEN_DECL 17 | extern int creat(const char*,int), open(const char*,int); 18 | #endif 19 | extern int close(int); 20 | extern int read(int,void*,size_t), write(int,void*,size_t); 21 | extern int unlink(const char*); 22 | #ifndef _POSIX_SOURCE 23 | #ifndef NON_UNIX_STDIO 24 | extern FILE *fdopen(int, const char*); 25 | #endif 26 | #endif 27 | #endif /*KR_HEADERS*/ 28 | 29 | extern char *mktemp(char*); 30 | 31 | #ifdef __cplusplus 32 | } 33 | #endif 34 | #endif 35 | 36 | #include "fcntl.h" 37 | 38 | #ifndef O_WRONLY 39 | #define O_RDONLY 0 40 | #define O_WRONLY 1 41 | #endif 42 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/LIBF2C/signal1.h: -------------------------------------------------------------------------------- 1 | /* You may need to adjust the definition of signal1 to supply a */ 2 | /* cast to the correct argument type. This detail is system- and */ 3 | /* compiler-dependent. The #define below assumes signal.h declares */ 4 | /* type SIG_PF for the signal function's second argument. */ 5 | 6 | /* For some C++ compilers, "#define Sigarg_t ..." may be appropriate. */ 7 | 8 | #include 9 | 10 | #ifndef Sigret_t 11 | #define Sigret_t void 12 | #endif 13 | #ifndef Sigarg_t 14 | #ifdef KR_headers 15 | #define Sigarg_t 16 | #else 17 | #define Sigarg_t int 18 | #endif 19 | #endif /*Sigarg_t*/ 20 | 21 | #ifdef USE_SIG_PF /* compile with -DUSE_SIG_PF under IRIX */ 22 | #define sig_pf SIG_PF 23 | #else 24 | typedef Sigret_t (*sig_pf)(Sigarg_t); 25 | #endif 26 | 27 | #define signal1(a,b) signal(a,(sig_pf)b) 28 | 29 | #ifdef __cplusplus 30 | #define Sigarg ... 31 | #define Use_Sigarg 32 | #else 33 | #define Sigarg Int n 34 | #define Use_Sigarg n = n /* shut up compiler warning */ 35 | #endif 36 | -------------------------------------------------------------------------------- /src/lib/third_party/numerics/linkage.h: -------------------------------------------------------------------------------- 1 | #ifndef H_THIRD_PARTY_NUMERICS_LINKAGE_H 2 | #define H_THIRD_PARTY_NUMERICS_LINKAGE_H 3 | 4 | #include 5 | 6 | #ifdef geogram_num_3rdparty_EXPORTS 7 | #define NUMERICS_API GEO_EXPORT 8 | #else 9 | #define NUMERICS_API GEO_IMPORT 10 | #endif 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /src/tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(test_nn_search) 2 | add_subdirectory(test_convex_cell) 3 | add_subdirectory(bench_load) 4 | add_subdirectory(test_locks) 5 | add_subdirectory(test_expansion_nt) 6 | add_subdirectory(test_HLBFGS) 7 | add_subdirectory(test_RVC) 8 | add_subdirectory(test_logger) 9 | add_subdirectory(test_CDT_2d) 10 | add_subdirectory(test_geofile) 11 | add_subdirectory(test_mesh_syntaxic_sugar) 12 | 13 | -------------------------------------------------------------------------------- /src/tests/bench_load/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(bench_load ${SOURCES}) 3 | target_link_libraries(bench_load geogram) 4 | 5 | set_target_properties(bench_load PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_CDT_2d/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_CDT_2d ${SOURCES}) 3 | target_link_libraries(test_CDT_2d geogram) 4 | 5 | set_target_properties(test_CDT_2d PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_HLBFGS/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_HLBFGS ${SOURCES}) 3 | target_link_libraries(test_HLBFGS geogram) 4 | 5 | set_target_properties(test_HLBFGS PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_RVC/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_RVC ${SOURCES}) 3 | target_link_libraries(test_RVC geogram) 4 | 5 | set_target_properties(test_RVC PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_convex_cell/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_convex_cell ${SOURCES}) 3 | target_link_libraries(test_convex_cell geogram) 4 | 5 | set_target_properties(test_convex_cell PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_expansion_nt/CGAL/README.txt: -------------------------------------------------------------------------------- 1 | A simple CGAL program that computes a 3D Delaunay triangulation, 2 | with GEOGRAM's expansion_nt class plugged into it. 3 | 4 | Note: it is meant to be used with the Pluggable Software Module. 5 | You got the Pluggable Software Module if the file from which you 6 | extracted this program is called something like MultiPrecision_psm_ver.tar.gz 7 | or MultiPrecision_psm_ver.zip, where ver is the version number. 8 | If you got the Geogram distribution, then you can generate the Pluggable 9 | Software Module by using tools/extract_psm.sh 10 | 11 | To compile it: 12 | cmake . -D CMAKE_BUILD_TYPE=Release 13 | make 14 | 15 | To test: 16 | cat ocean_r.xyz ./benchmark 10 17 | 18 | Where 10 is the number of times the Delaunay triangulation is 19 | constructed (in order to have sufficient long running times to measure 20 | timings) 21 | 22 | To compare with CGAL's arbitrary precision type: 23 | Comment-out the line with "#define CGAL_USE_GEO_EXPANSION" in benchmark.cpp 24 | and recompile it (make). Note: CGAL's arbitrary precision type is a bit faster 25 | (I need to work more !!) 26 | -------------------------------------------------------------------------------- /src/tests/test_expansion_nt/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_expansion_nt ${SOURCES}) 3 | target_link_libraries(test_expansion_nt geogram) 4 | 5 | set_target_properties(test_expansion_nt PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_geofile/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_geofile ${SOURCES}) 3 | target_link_libraries(test_geofile geogram) 4 | 5 | set_target_properties(test_geofile PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_locks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_locks ${SOURCES}) 3 | target_link_libraries(test_locks geogram) 4 | 5 | set_target_properties(test_locks PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_logger/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_logger ${SOURCES}) 3 | target_link_libraries(test_logger geogram) 4 | 5 | set_target_properties(test_logger PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_mesh_syntaxic_sugar/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | vor_add_executable(test_mesh_syntaxic_sugar ${SOURCES}) 3 | target_link_libraries(test_mesh_syntaxic_sugar geogram) 4 | 5 | set_target_properties(test_mesh_syntaxic_sugar PROPERTIES FOLDER "GEOGRAM/Tests") 6 | -------------------------------------------------------------------------------- /src/tests/test_nn_search/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aux_source_directories(SOURCES "" .) 2 | 3 | vor_reset_warning_level() 4 | 5 | #if( 6 | # "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR 7 | # "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang" 8 | #) 9 | # add_definitions(-Wno-zero-as-null-pointer-constant) 10 | # add_definitions(-Wno-suggest-override) 11 | # add_definitions(-Wno-suggest-destructor-override) 12 | # add_definitions(-Wno-weak-vtables) 13 | #endif() 14 | 15 | aux_source_directories(SOURCES "" ./third_party/ANN) 16 | 17 | vor_add_executable(test_nn_search ${SOURCES}) 18 | target_link_libraries(test_nn_search geogram) 19 | 20 | set_target_properties(test_nn_search PROPERTIES FOLDER "GEOGRAM/Tests") 21 | -------------------------------------------------------------------------------- /src/tutorial/01_basics/hello_GLUP_app/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | # Instructions to compile this program 3 | # are explained in tutorials/README.txt 4 | 5 | cmake_minimum_required(VERSION 2.8.11) 6 | project(hello_GLUP_app) 7 | 8 | if (NOT CMAKE_BUILD_TYPE) 9 | message (STATUS "No build type selected, default to Release") 10 | set (CMAKE_BUILD_TYPE "Release") 11 | endif () 12 | 13 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}) 14 | find_package(Geogram REQUIRED) 15 | 16 | add_executable(hello_GLUP_app main.cpp) 17 | target_link_libraries(hello_GLUP_app Geogram::geogram_gfx Geogram::geogram) 18 | -------------------------------------------------------------------------------- /src/tutorial/01_basics/hello_GLUP_app/makeit.sh: -------------------------------------------------------------------------------- 1 | # Instructions to compile this program 2 | # are explained in tutorials/README.txt 3 | 4 | export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$GEOGRAM_INSTALL_ROOT/lib/pkgconfig 5 | g++ main.cpp `pkg-config --cflags --libs geogram_gfx` -o hello_GLUP_app 6 | -------------------------------------------------------------------------------- /src/tutorial/01_basics/hello_geogram/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Instructions to compile this program 2 | # are explained in tutorials/README.txt 3 | 4 | cmake_minimum_required(VERSION 2.8.11) 5 | project(hello_geogram) 6 | 7 | if (NOT CMAKE_BUILD_TYPE) 8 | message (STATUS "No build type selected, default to Release") 9 | set (CMAKE_BUILD_TYPE "Release") 10 | endif () 11 | 12 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}) 13 | find_package(Geogram REQUIRED) 14 | 15 | add_executable(hello_geogram main.cpp) 16 | target_link_libraries(hello_geogram Geogram::geogram) 17 | -------------------------------------------------------------------------------- /src/tutorial/01_basics/hello_geogram/makeit.sh: -------------------------------------------------------------------------------- 1 | # Instructions to compile this program 2 | # are explained in tutorials/README.txt 3 | 4 | export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$GEOGRAM_INSTALL_ROOT/lib/pkgconfig 5 | g++ main.cpp `pkg-config --cflags --libs geogram` -o hello_geogram 6 | 7 | -------------------------------------------------------------------------------- /src/tutorial/README.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/src/tutorial/README.txt -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copy the RobotFramework wrapper scripts to the build directory 2 | 3 | set(test_scripts testenv runpybot runride) 4 | 5 | foreach(script ${test_scripts}) 6 | configure_file_with_native_paths( 7 | ${PROJECT_SOURCE_DIR}/tools/${script}.${SHELL_SUFFIX}.in 8 | ${PROJECT_BINARY_DIR}/tests/${script}.${SHELL_SUFFIX} 9 | AUTODETECT 10 | OPTIONS @ONLY 11 | ) 12 | endforeach() 13 | 14 | # Copy the valgrind suppression file to the build directory 15 | 16 | if(UNIX) 17 | configure_file( 18 | ${PROJECT_SOURCE_DIR}/tools/valgrind.supp 19 | ${PROJECT_BINARY_DIR}/tests/valgrind.supp 20 | COPYONLY 21 | ) 22 | endif() 23 | -------------------------------------------------------------------------------- /tests/CSGplus.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags CSGplus 5 | Library OperatingSystem 6 | Library String 7 | Library lib/VorpatestLibrary.py 8 | 9 | *** Variables ** 10 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}CSG 11 | 12 | *** Test Cases *** 13 | example021.csg 14 | Run Test 15 | 16 | example022.csg 17 | Run Test 18 | 19 | example023.csg 20 | Run Test 21 | 22 | example024.csg 23 | Run Test 24 | 25 | *** Keywords *** 26 | Run Test 27 | [Arguments] ${input_name}=${TEST NAME} @{options} 28 | [Documentation] Computes a CSG operation 29 | ... The name of the input file is taken from the test name. 30 | run command compute_CSG @{options} ${DATADIR}${/}${input_name} 31 | -------------------------------------------------------------------------------- /tests/DelaunaySequential.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags Delaunay smoke daily 5 | Library OperatingSystem 6 | Library String 7 | Library lib/VorpatestLibrary.py 8 | 9 | *** Variables *** 10 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}Small 11 | 12 | *** Test Cases *** 13 | cube.obj 14 | [Tags] daily_valgrind 15 | Run Test 16 | 17 | joint.off 18 | [Tags] daily_valgrind 19 | Run Test 20 | 21 | *** Keywords *** 22 | Run Test 23 | [Arguments] ${input_name}=${TEST NAME} @{options} 24 | [Documentation] Runs compute_delaunay on a single input file. 25 | ... The name of the input file is taken from the test name. 26 | run command compute_delaunay ${DATADIR}${/}${input_name} algo:delaunay=BDEL @{options} 27 | -------------------------------------------------------------------------------- /tests/Exploragram/HexDom.robot.exploragram: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags Remesh smoke_Standard daily_valgrind_Standard 5 | Library OperatingSystem 6 | Library lib/VorpatestLibrary.py 7 | 8 | *** Variables *** 9 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}Tets 10 | 11 | *** Test Cases *** 12 | joint_with_tets.meshb 13 | Run Test joint_with_tets.meshb hexdom:stage=all 14 | 15 | *** Keywords *** 16 | Run Test 17 | [Arguments] ${input_name}=${TEST NAME} @{options} 18 | [Documentation] Runs a hexdom pipeline hex dominant test 19 | ... The name of the input file is taken from the test name. 20 | run command hexdom_pipeline hexdom:tets=${DATADIR}${/}${input_name} @{options} 21 | -------------------------------------------------------------------------------- /tests/Geofile.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags smoke daily 5 | Library OperatingSystem 6 | Library lib/VorpatestLibrary.py 7 | 8 | *** Variables *** 9 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data 10 | 11 | *** Test Cases *** 12 | Geofile 13 | [Tags] daily_valgrind 14 | Run Test 15 | 16 | 17 | *** Keywords *** 18 | Run Test 19 | [Arguments] ${input_name}=${TEST NAME} @{options} 20 | [Documentation] Tests geofile input/output with large file 21 | run command test_geofile @{options} 22 | -------------------------------------------------------------------------------- /tests/Logger.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags smoke daily 5 | Library OperatingSystem 6 | Library lib/VorpatestLibrary.py 7 | 8 | *** Variables *** 9 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data 10 | 11 | *** Test Cases *** 12 | Logger 13 | [Tags] daily_valgrind 14 | Run Test 15 | 16 | 17 | *** Keywords *** 18 | Run Test 19 | [Arguments] ${input_name}=${TEST NAME} @{options} 20 | [Documentation] Tests the Logger, with multiple threads 21 | run command test_logger @{options} 22 | -------------------------------------------------------------------------------- /tests/NL.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags RVD daily 5 | Library OperatingSystem 6 | Library String 7 | Library lib/VorpatestLibrary.py 8 | 9 | *** Variables *** 10 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}RVD 11 | 12 | *** Test Cases *** 13 | OpenNL test 14 | [Tags] smoke daily_valgrind 15 | Run Test 16 | 17 | 18 | *** Keywords *** 19 | Run Test 20 | [Documentation] Runs test_NL 21 | run command opennl_basic_example 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/OTM.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags OTM smoke_Standard daily 5 | Library OperatingSystem 6 | Library String 7 | Library lib/VorpatestLibrary.py 8 | 9 | *** Variables *** 10 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}Tets 11 | 12 | *** Test Cases *** 13 | PetitCubeTets-PetiteSphereTets 14 | [Tags] weekly_valgrind 15 | Run Test PetitCubeTets.meshb PetiteSphereTets.meshb 16 | 17 | *** Keywords *** 18 | Run Test 19 | [Arguments] ${mesh1} ${mesh2} @{options} 20 | [Documentation] Runs compute_OTM on 2 input meshes 21 | run command compute_OTM @{options} ${DATADIR}${/}${mesh1} ${DATADIR}${/}${mesh2} 22 | -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- 1 | # Non-regression tests 2 | 3 | Geogram uses extensive testing. More details [here](https://github.com/BrunoLevy/geogram/wiki/DevOps#tests) on how to run the 4 | tests manually. Tests are run after each commit (`smoke`), and on a regular basis (`nightly` and `weekly`), using github actions. 5 | Test results are published both as artifacts attached to the corresponding actions, and as HTML pages (links below). 6 | 7 | # Links to dashboards 8 | 9 | [![Smoke](https://custom-icon-badges.demolab.com/badge/CI-Smoke-lightblue?logo=tasklist&logoColor=white)](https://brunolevy.github.io/geogram.CI/reports/smoke/) 10 | 11 | [![Nightly](https://custom-icon-badges.demolab.com/badge/CI-Nightly-lightblue?logo=tasklist&logoColor=white)](https://brunolevy.github.io/geogram.CI/reports/nightly/) 12 | -------------------------------------------------------------------------------- /tests/SyntaxicSugar.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags smoke daily daily_valgrind 5 | Library OperatingSystem 6 | Library lib/VorpatestLibrary.py 7 | 8 | *** Test Cases *** 9 | triangles 10 | Run Test nb_subdivisions=9 quads=false 11 | 12 | quads 13 | Run Test nb_subdivisions=9 quads=true 14 | 15 | 16 | *** Keywords *** 17 | Run Test 18 | [Arguments] @{options} 19 | [Documentation] Runs test of mesh traversal with syntaxic sugar 20 | run command test_mesh_syntaxic_sugar @{options} 21 | -------------------------------------------------------------------------------- /tests/Tetrahedralize.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags Remesh smoke_Standard daily_valgrind_Standard 5 | Library OperatingSystem 6 | Library lib/VorpatestLibrary.py 7 | 8 | *** Variables *** 9 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}Small 10 | 11 | *** Test Cases *** 12 | 13 | three_holes.obj (profile=tet) 14 | Run Test three_holes.obj profile=tet 15 | 16 | 17 | *** Keywords *** 18 | Run Test 19 | [Arguments] ${input_name}=${TEST NAME} @{options} 20 | [Documentation] Runs a vorpaline test 21 | ... The name of the input file is taken from the test name. 22 | run vorpaline ${DATADIR}${/}${input_name} pts=5000 @{options} 23 | run vorpastat 24 | 25 | Run Fail Test 26 | [Arguments] @{args} 27 | [Documentation] Runs a vorpaline test that is expected to fail 28 | Run Keyword And Expect Error CalledProcessError: Command*returned non-zero exit status* run vorpaline @{args} 29 | -------------------------------------------------------------------------------- /tests/Vorpaline/PGP3d.robot.vorpaline: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags Remesh smoke daily 5 | Library OperatingSystem 6 | Library lib/VorpatestLibrary.py 7 | 8 | *** Variables *** 9 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}Small 10 | 11 | *** Test Cases *** 12 | three_holes.obj 13 | [Tags] daily_valgrind 14 | Run Test three_holes.obj profile=hex pts=1000 15 | 16 | *** Keywords *** 17 | Run Test 18 | [Arguments] ${input_name}=${TEST NAME} @{options} 19 | [Documentation] Runs a vorpaline PGP3D hex dominant meshing test 20 | ... The name of the input file is taken from the test name. 21 | run vorpaline ${DATADIR}${/}${input_name} @{options} 22 | -------------------------------------------------------------------------------- /tests/Vorpaline/VolumetricCVT.robot.vorpaline: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Test Setup Prepare Test 3 | Test Teardown Cleanup Test 4 | Force Tags VolumetricCVT smoke daily 5 | Library OperatingSystem 6 | Library String 7 | Library lib/VorpatestLibrary.py 8 | 9 | *** Variables *** 10 | ${DATADIR} %{VORPATEST_ROOT_DIR}${/}data${/}Tets 11 | 12 | *** Test Cases *** 13 | PetitCubeTets.meshb 14 | [Tags] daily_valgrind 15 | Run Test PetitCubeTets.meshb pts=1000 16 | 17 | PetitCubeTets.meshb (predicates=exact) 18 | [Tags] daily_valgrind 19 | Run Test PetitCubeTets.meshb pts=1000 algo:predicates=exact 20 | 21 | PetitCubeTets.meshb with LpCVT 22 | [Tags] weekly_valgrind 23 | Run Test PetitCubeTets.meshb pts=1000 LpCVT=true 24 | 25 | *** Keywords *** 26 | Run Test 27 | [Arguments] ${input_name}=${TEST NAME} @{options} 28 | [Documentation] Runs test_volumetric_CVT on a single input file. 29 | ... The name of the input file is taken from the test name. 30 | run command test_volumetric_CVT @{options} ${DATADIR}${/}${input_name} 31 | -------------------------------------------------------------------------------- /tests/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/tests/robot.png -------------------------------------------------------------------------------- /tools/Images/ko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/tools/Images/ko.png -------------------------------------------------------------------------------- /tools/Images/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/tools/Images/ok.png -------------------------------------------------------------------------------- /tools/Images/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrunoLevy/geogram/2b136752baebdef43ec5155269e1a55f836aba1b/tools/Images/robot.png -------------------------------------------------------------------------------- /tools/clean_cmake.sh: -------------------------------------------------------------------------------- 1 | make clean 2 | rm -fr CMakeCache.txt CMakeFiles Makefile cmake_install.cmake imgui.ini *~ 3 | -------------------------------------------------------------------------------- /tools/fixdoc_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | scriptdir=`dirname "$0"` 3 | cd $scriptdir/.. || exit 1 4 | tools/fixdoc.pl \ 5 | --verbose \ 6 | --replace \ 7 | --no-backup \ 8 | --exclude '/third_party/' \ 9 | --exclude '/bin/medit/' \ 10 | --exclude '/filtered_predicates/side\d\.h' \ 11 | --exclude '/basic/license_msgs\.h' \ 12 | src 13 | 14 | -------------------------------------------------------------------------------- /tools/gen_all_emscripten_htmls.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Calls gen_emscripten_html.sh for a list of files in the specified directory 4 | 5 | EXEDIR=$1 6 | SCRIPTDIR=`dirname "$0"` 7 | shift 8 | EXES=$@ 9 | 10 | if [ -z "$EXEDIR" ] || [ -z "$EXES" ]; 11 | then 12 | echo "Usage: gen_all_emscripten_htmls.sh directory exe1 exe2 ... exeN" 13 | echo "(where exe is executable name without the .js extension)" 14 | exit -1 15 | fi 16 | 17 | for EXE in $EXES 18 | do 19 | echo Generating webpage for $EXEDIR/$EXE 20 | if ! [ -f "$EXEDIR/$EXE.js" ]; 21 | then 22 | echo " $EXEDIR/$EXE.js: File not found !" 23 | exit -1 24 | fi 25 | (cd $EXEDIR; ../../../tools/gen_emscripten_html.sh $EXE) 26 | done 27 | 28 | INDEX="$EXEDIR/index.html" 29 | 30 | echo Generating index: $INDEX 31 | 32 | cat tools/head.html > $INDEX 33 | echo "

Emscripten demos

" >> $INDEX 34 | echo "
    " >> $INDEX 35 | for EXE in $EXES 36 | do 37 | echo "
  • $EXE
  • " >> $INDEX 38 | done 39 | echo "
" >> $INDEX 40 | -------------------------------------------------------------------------------- /tools/generate_todo_list_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | scriptdir=$(dirname "$0") 3 | $scriptdir/generate_todo_list.pl \ 4 | --verbose \ 5 | --output-dir todo_list \ 6 | --exclude '/third_party/' \ 7 | --exclude '/bin/medit/' \ 8 | --exclude '/filtered_predicates/side\d\.h' \ 9 | --exclude '/basic/license_msgs\.h' \ 10 | --strip "$scriptdir/../" \ 11 | $scriptdir/../src 12 | 13 | -------------------------------------------------------------------------------- /tools/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tools/indent_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | scriptdir=`dirname "$0"` 3 | cd $scriptdir/.. || exit 1 4 | tools/indent.pl \ 5 | --verbose \ 6 | --replace \ 7 | --no-backup \ 8 | --exclude '/third_party/' \ 9 | --exclude '/bin/medit/' \ 10 | --exclude '/filtered_predicates/side\d\.h' \ 11 | --exclude '/basic/license_msgs\.h' \ 12 | src 13 | 14 | -------------------------------------------------------------------------------- /tools/indent_with_emacs.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | ":"; exec emacs --no-site-file --script "$0" -- "$@" # -*- mode:emacs-lisp -*- 3 | 4 | ;; emacs options: 5 | (setq make-backup-files nil) 6 | (setq next-line-add-newlines nil) 7 | 8 | (setq-default indent-tabs-mode nil) 9 | (setq-default c-basic-offset 4) 10 | (setq c-default-style "linux") 11 | 12 | (add-hook 'c-mode-hook 13 | (lambda() 14 | (c-set-offset 'arglist-close 'c-lineup-close-paren) 15 | ) 16 | ) 17 | 18 | (add-hook 'c++-mode-hook 19 | (lambda() 20 | (c-set-offset 'arglist-close 'c-lineup-close-paren) 21 | ) 22 | ) 23 | 24 | 25 | ;; open file: 26 | (find-file (nth 1 argv)) 27 | 28 | ;; process file: 29 | (delete-trailing-whitespace) 30 | (untabify (point-min) (point-max)) 31 | (indent-region (point-min) (point-max)) 32 | 33 | ;; save file: 34 | (save-buffer) 35 | -------------------------------------------------------------------------------- /tools/list_debian_packages.sh: -------------------------------------------------------------------------------- 1 | # Lists the Debian packages used by an executable 2 | # Usage: list_debian_package.sh executable_name 3 | 4 | if [ -z $1 ] 5 | then 6 | echo "Usage: list_debian_packages.sh executable_name" 7 | exit -1 8 | fi 9 | 10 | 11 | # Get all the shared objects used by the executable. 12 | LIBS=`ldd $1 | awk '{print $3}'` 13 | 14 | # For each shared object, find the corresponding Debian package 15 | PACKAGES=`dpkg -S $LIBS | grep amd64 | egrep -v nvidia | awk '{print $1}' | sed 's|\:$||'` 16 | 17 | # Get the version of each Debian package 18 | for PACKAGE in $PACKAGES 19 | do 20 | PACKAGE_VERSION=`dpkg -s $PACKAGE | grep 'Version:' | awk '{ print $2 }'` 21 | PACKAGES_WITH_VERSIONS="$PACKAGES_WITH_VERSIONS, $PACKAGE (>= $PACKAGE_VERSION)" 22 | done 23 | 24 | # Remove the leading ", " 25 | echo $PACKAGES_WITH_VERSIONS | sed -e 's|^, ||' 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tools/reformat_all_sources.sh: -------------------------------------------------------------------------------- 1 | 2 | BASEDIR=$(dirname "$0") 3 | 4 | # Already done in indent_with_emace.sh, kept here if 5 | # we just need to do that 6 | function untabify_and_remove_trailing_spaces() { 7 | cat $1.unformatted | sed -e 's|\t| |g' -e 's|\s\+$||g' > $1 8 | } 9 | 10 | function reformat() { 11 | echo '>>> reformatting ' $1 12 | cp $1 $1.before_reformatting 13 | $BASEDIR/indent_with_emacs.sh $1 14 | } 15 | 16 | for i in `find . \( -name third_party -o -name "embedded_*.cpp" -o -name "sphere_model.cpp" \) -prune \\ 17 | -o \( -name "*.h" -o -name "*.cpp" -o -name "*.c" -o -name "*.txt" \) -print` 18 | do 19 | reformat $i 20 | done 21 | -------------------------------------------------------------------------------- /tools/replace_copyright.sh: -------------------------------------------------------------------------------- 1 | function replace_copyright() { 2 | (cat tools/header.txt; awk < $1 'BEGIN {STATE=0}{if(STATE==0 && $1 == "/*") {STATE=1} else if(STATE==1 && $1 == "*/") {STATE=2} else if(STATE==2) {print;} }') > /tmp/gloglo.txt 3 | mv /tmp/gloglo.txt $1 4 | } 5 | 6 | for i in `find . \( -name "*.h" -o -name "*.cpp" -o -name "*.c" \) -print` 7 | do 8 | echo ">>>" $i 9 | if grep -q 'Contact: Bruno' $i; then 10 | echo "....replacing copyright in " $i 11 | replace_copyright $i 12 | else 13 | echo "....skipping " $i 14 | fi 15 | done -------------------------------------------------------------------------------- /tools/runpybot.bat.in: -------------------------------------------------------------------------------- 1 | :: Wrapper for the RobotFramework test runner 2 | @echo off 3 | 4 | set PATH=%PATH%;C:\Python27;C:\Python27\Scripts 5 | 6 | :: echo PATH=%PATH% 7 | 8 | :: Keep environment changes local 9 | setlocal ENABLEEXTENSIONS 10 | 11 | call "%~dp0\testenv.bat" %* 12 | call robot %args% 13 | if %ERRORLEVEL% EQU 0 ( 14 | echo > TESTS_SUCCESS 15 | ) 16 | 17 | :: Some Jenkins plugins (like the Jenkins Performance Plugin) do not take 18 | :: testcase fullnames into account. Testnames with identical names but from 19 | :: different testsuites are considered a single testcase. This results in 20 | :: confusing reports and graphs. We patch the xunit file generated by 21 | :: RobotFramework and replace testcase names by their full names. 22 | 23 | if exist xunit.xml ( 24 | echo Generating XUnit report with full testcase names 25 | "%VORPALINE_SOURCE_DIR%\tools\jenkins\xunit_full_names.pl" xunit.xml > xunit_full_names.xml 26 | ) 27 | 28 | -------------------------------------------------------------------------------- /tools/runride.bat.in: -------------------------------------------------------------------------------- 1 | :: Wrapper for the RobotFramework editor 2 | @echo off 3 | 4 | :: Keep environment changes local 5 | setlocal ENABLEEXTENSIONS 6 | 7 | call "%~dp0\testenv.bat" %* 8 | ride.py %args% 9 | -------------------------------------------------------------------------------- /tools/runride.sh.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Wrapper for the RobotFramework editor 3 | 4 | scriptdir=`dirname "$0"` 5 | . "$scriptdir/testenv.sh" || exit 1 6 | exec ride.py $args 7 | 8 | -------------------------------------------------------------------------------- /tools/testenv.sh.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Template to set environment variables for the 3 | # non-regression testing framework. 4 | 5 | export VORPALINE_BUILD_CONFIG="@CMAKE_BUILD_TYPE.PATH@" 6 | export VORPALINE_SOURCE_DIR="@CMAKE_SOURCE_DIR.PATH@" 7 | export VORPALINE_BUILD_DIR="@CMAKE_BINARY_DIR.PATH@" 8 | export VORPALINE_BIN_DIR="@CMAKE_RUNTIME_OUTPUT_DIRECTORY.PATH@" 9 | export VORPALINE_LIB_DIR="@CMAKE_LIBRARY_OUTPUT_DIRECTORY.PATH@" 10 | export VORPATEST_ROOT_DIR="@CMAKE_SOURCE_DIR.PATH@/tests" 11 | export DATADIR="@CMAKE_SOURCE_DIR.PATH@/tests/data" 12 | 13 | args= 14 | while [ -n "$1" ]; do 15 | case "$1" in 16 | --with-*=*) 17 | var=`echo "$1" | sed 's/--with-\([^=]*\)=\(.*\)$/VORPALINE_WITH_\U\1\E=\2/'` 18 | export "$var" 19 | shift 20 | ;; 21 | --with-*) 22 | var=`echo "$1" | sed 's/--with-\(.*\)$/VORPALINE_WITH_\U\1=1/'` 23 | export "$var" 24 | shift 25 | ;; 26 | *) 27 | args="$args $1" 28 | shift; 29 | ;; 30 | esac 31 | done 32 | 33 | -------------------------------------------------------------------------------- /tools/unpack_artifacts.sh: -------------------------------------------------------------------------------- 1 | # unpack artifacts.sh 2 | # used to test generate_reports.sh manually 3 | # 4 | # How to use: 5 | # download all .zip artifacts 6 | # $ tools/unpack_artifacts.sh 7 | # $ tools/generate_report.sh 8 | 9 | rm -fr artifacts 10 | 11 | for archive in `ls *.zip` 12 | do 13 | basename=`basename $archive .zip` 14 | mkdir -p artifacts/$basename 15 | (cd artifacts/$basename; unzip ../../$archive) 16 | done 17 | 18 | -------------------------------------------------------------------------------- /tools/valgrind.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | scriptdir=`dirname "$0"` 3 | set -x 4 | valgrind --verbose \ 5 | --leak-check=full \ 6 | --show-reachable=yes \ 7 | --error-limit=no \ 8 | --log-file=valgrind.log \ 9 | --suppressions="$scriptdir/valgrind.supp" \ 10 | "$@" 11 | 12 | --------------------------------------------------------------------------------