项目简介
本项目是基于C语言的数学计算系统,致力于计算黎曼ζ函数在临界线上的零点数量。黎曼ζ函数在数论里意义重大,其零点分布和素数分布等数学问题紧密相关。项目借助实现Riemann - Siegel公式,运用采样方法估计零点数量,并且支持多种编译器与硬件架构,像通用CPU和ARM架构。项目拥有多个优化版本的代码文件,可适用于不同性能需求和硬件环境。
项目的主要特性和功能
- 实现Riemann - Siegel公式,精确计算黎曼ζ函数在临界线上的值。
- 通过采样方法统计函数值的符号变化,估计零点数量。
- 支持GCC、Clang和ARM编译器,能适应不同编译环境。
- 提供多个优化版本的代码文件,包含无循环展开、内联函数、ARM优化等。
- 支持命令行参数输入,可自定义采样区间和步长,灵活调整计算范围。
- 输出估计的零点数量和计算时间,方便分析与比较。
安装使用步骤
假设用户已下载项目的源码文件。
1. 解压文件:把项目源码解压到本地目录。
2. 编译代码:
- 用make
命令编译所有源文件,支持GCC和Clang编译器。
- 用make ARM=1
命令编译支持ARM架构的代码,同时启用ARM特定的编译标志和数学库。
- 添加DEBUG=1
参数以启用调试符号(-g3
)。
3. 运行程序:
- 用./quick.sbatch <prog> [args ...]
快速运行程序,输出结果会保存在slurm/testout-%j.log
和slurm/testerr-%j.log
中。
- 用./compare.sbatch <id_mesurement> <nb_reps> <older_prog> <newer_prog> [args ...]
比较两个版本的程序性能,结果保存在output/
目录中。
4. 性能对比:
- 用./compare_versions.sh <compiler_dir> <lower_bound> <upper_bound> <samples> [-r reps | -c core | -o]
对比同一编译器目录下不同二进制文件的性能。
- 用./compare_compilers.sh <source_file> <lower_bound> <upper_bound> <samples> [-r reps | -c core | -o]
对比不同编译器对同一源文件的编译结果。
- 用./compare_two.sh <file1> <file2> <lower_bound> <upper_bound> <samples> [-r reps | -c core | -o]
对比两个文件的性能。
注意:由于项目涉及大量数学运算和数值计算,程序运行时间可能较长,尤其是在较大采样区间上。用户需根据实际需求选择合适的代码版本和编译选项。此项目主要用于学术研究和实践,大规模计算任务可能需更高级算法和工具。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】