zoukankan      html  css  js  c++  java
  • math.h熟悉

      1 #include <assert.h>      //验证程序断言
    2 #include <ctype.h> // 字符类型
    3 #include <errno.h> // 出错码
    4 #include <math.h> // 数学常量
    5 #include <setjmp.h> // 非局部goto
    6 #include <signal.h> // 信号
    7 #include <stdarg.h> // 可变参数表
    8 #include <stdio.h> // 标准I/O库
    9 #include <stdlib.h> // 实用程序库函数
    10 #include <string.h> // 字符串操作
    11 #include <time.h> // 时间和日期
    12 //#include 不常用:
    13 #include <complex.h> //支持复数算术运算
    14 #include <fenv.h> // 浮点环境
    15 #include <float.h> // 浮点常量
    16 #include <inttypes.h> //整型格式转换
    17 #include <iso646.h> //替代关系操作符宏
    18 #include <limits.h> // 实现常量
    19 #include <locale.h> // 局部类别
    20 #include <stdbool.h> //布尔类型和值
    21 #include <stddef.h> // 标准定义
    22 #include <stdint.h> // 整型
    23 //#include <tgmath.h> //通用类型数学宏
    24 #include <wchar.h> //扩展的多字节和宽字符支持
    25 #include <wctype.h> //宽字符分类和映射支持
    26
    27
    28
    29
    30
    31
    32 // double能精确到1e-15,float只能精确到1e-6,long double能精确到1e-18
    33 // 计算几何,数学库,double类型的数在处理时候要有一个精度问题,一般定义成EPS
    34
    35
    36 // 判断一个double类型的数是否为整数
    37 // EPS的精度根据题目的要求自定
    38
    39 #include <math.h>
    40
    41 #define EPS 1e-8
    42
    43 inline int is_integer(double f) {
    44 return fabs(round(f)-f) < EPS;
    45 }
    46
    47 const double g_PI = atan2(0, -1);
    48
    49 const int g_a = is_integer(1.39);
    50
    51 #include <iostream>
    52 #include <math.h>
    53 #include <stdio.h>
    54 #include <limits.h>
    55
    56 using namespace std;
    57
    58 int main()
    59 {
    60
    61 printf("%lf\n", hypot(3, 4));
    62
    63
    64 /*
    65 // round // 四舍五入
    66 printf("%lf\n", round(0.4444444444444449));
    67 printf("%lf\n", round(0.5000000000000000));
    68 printf("%lf\n", round(0.51));
    69 printf("%lf\n", round(0.75));
    70 */
    71
    72 /*
    73 // ldexp, frexp // 一个数拆成a*2^b,合成a*2^b
    74 // ldexp(5, 2) => 10
    75 // frexp(10, &i) = > 5 && i = 1
    76
    77 int val;
    78
    79 printf("ldexp=[%lf]\n", ldexp(5, 1));
    80 double a = frexp(20, &val);
    81 printf("frexp=[%lf, %d]\n", a, val);
    82 */
    83
    84 /*
    85 // atan
    86 printf("atan(-1234567899)/M_PI=[%.20lf]\n", atan(-1234567899)/M_PI);
    87 printf("atan(0)/M_PI=[%.20lf]\n", atan(0)/M_PI);
    88 printf("atan(1234567899)/M_PI=[%.20lf]\n", atan(1234567899)/M_PI);
    89 */
    90
    91 /*
    92 // acos
    93 printf("acos(-1)/M_PI=[%.20lf]\n", acos(-1)/M_PI);
    94 printf("acos(0)/M_PI=[%.20lf]\n", acos(0)/M_PI);
    95 printf("acos(1)/M_PI=[%.20lf]\n", acos(1)/M_PI);
    96 */
    97
    98 /*
    99 // asin
    100 printf("asin(-1)/M_PI=[%.20lf]\n", asin(-1)/M_PI);
    101 printf("asin(0)/M_PI=[%.20lf]\n", asin(0)/M_PI);
    102 printf("asin(1)/M_PI=[%.20lf]\n", asin(1)/M_PI);
    103 */
    104
    105 /*
    106 // atan2 // 求点(X, Y)与X正轴的夹角,[-pi, pi)
    107 printf("atan2/M_PI=[%.20lf]\n", atan2(-1, 0)/M_PI);
    108 printf("atan2/M_PI=[%.20lf]\n", atan2( 0, 1)/M_PI);
    109 printf("atan2/M_PI=[%.20lf]\n", atan2( 1, 0)/M_PI);
    110 printf("atan2/M_PI=[%.20lf]\n", atan2( 0, -1)/M_PI);
    111 */
    112
    113 /*
    114 // log, log10 // lnx log10(x)
    115 printf("%lf\n", log(3));
    116 printf("%lf\n", log10(3));
    117 */
    118
    119 /*
    120 // exp e^x
    121 printf("%lf\n", exp(3));
    122 */
    123
    124 /*
    125 // pow, sqrt x^a, sqrt(x)
    126 printf("%lf\n", sqrt(2));
    127
    128 printf("%lf\n", pow(2, -1));
    129 printf("%lf\n", pow(2, 0));
    130 printf("%lf\n", pow(2, 0.5));
    131 printf("%lf\n", pow(2, 2));
    132 printf("%lf\n", pow(2, 10));
    133 */
    134
    135 /*
    136 // floor, ceil 下取整和上取整
    137
    138 double x = 1.9999999999999998;
    139 printf("%lf\n", floor(x));
    140 printf("%lf\n", ceil(x));
    141 */
    142
    143
    144 /*
    145 // modf 先判断是否为整数 拆分成整数和小数
    146 double fraction, integer;
    147 double number = 1.9999999999999998;
    148 fraction = modf(number, &integer);
    149 printf("The whole and fractional parts of %lf are %lf and %lf\n", number, integer, fraction);
    150 */
    151
    152 /*
    153 // fmod 余数判断是否和mod相等 小数求余
    154 printf("%.20lf\n", fmod(2.8, 0));
    155
    156 // 浮点数不怕不一样,就怕相等,用fabs(a-b) < EPS来解决
    157 printf("%.20lf, %.20lf, %.20lf\n", 2.8, 0.2, fmod(2.8, 0.2));
    158 puts("===============================================\n");
    159 */
    160
    161 /*
    162 // 三角函数
    163 // tan
    164 printf("tan(-M_PI/2)=[%.20lf]\n", tan(-M_PI/2));
    165 printf("tan(0)=[%.20lf]\n", tan(0));
    166 printf("tan(M_PI/2)=[%.20lf]\n", tan(M_PI/2));
    167 printf("tan(M_PI)=[%.20lf]\n", tan(M_PI));
    168 // 带周期
    169 printf("tan(1.5*M_PI)=[%.20lf]\n", tan(1.5*M_PI));
    170 printf("tan(2.0*M_PI)=[%.20lf]\n", tan(2.0*M_PI));
    171 printf("tan(2.5*M_PI)=[%.20lf]\n", tan(2.5*M_PI));
    172 printf("tan(3.0*M_PI)=[%.20lf]\n", tan(3.0*M_PI));
    173 puts("===============================================\n");
    174
    175 // sin
    176 printf("sin(-M_PI/2)=[%.20lf]\n", sin(-M_PI/2));
    177 printf("sin(0)=[%.20lf]\n", sin(0));
    178 printf("sin(M_PI/2)=[%.20lf]\n", sin(M_PI/2));
    179 printf("sin(M_PI)=[%.20lf]\n", sin(M_PI));
    180 // 带周期
    181 printf("sin(1.5*M_PI)=[%.20lf]\n", sin(1.5*M_PI));
    182 printf("sin(2.0*M_PI)=[%.20lf]\n", sin(2.0*M_PI));
    183 printf("sin(2.5*M_PI)=[%.20lf]\n", sin(2.5*M_PI));
    184 printf("sin(3.0*M_PI)=[%.20lf]\n", sin(3.0*M_PI));
    185 puts("===============================================\n");
    186
    187 // cos
    188 printf("cos(-M_PI/2)=[%.20lf]\n", cos(-M_PI/2));
    189 printf("cos(0)=[%.20lf]\n", cos(0));
    190 printf("cos(M_PI/2)=[%.20lf]\n", cos(M_PI/2));
    191 printf("cos(M_PI)=[%.20lf]\n", cos(M_PI));
    192 // 带周期
    193 printf("cos(1.5*M_PI)=[%.20lf]\n", cos(1.5*M_PI));
    194 printf("cos(2.0*M_PI)=[%.20lf]\n", cos(2.0*M_PI));
    195 printf("cos(2.5*M_PI)=[%.20lf]\n", cos(2.5*M_PI));
    196 printf("cos(3.0*M_PI)=[%.20lf]\n", cos(3.0*M_PI));
    197 puts("===============================================\n");
    198 */
    199
    200 return 0;
    201 }
  • 相关阅读:
    HTML音频/视频DOM 参考手册
    HTML5 应用程序缓存 和 视频
    HTML 5 新的Input类型
    快速开发平台消息通知中心之短信发送
    设计模式之单例设计模式
    反射
    多线程之线程安全
    01-sql优化及索引
    多线程之线程状态
    shell/linux定时清理日志文件
  • 原文地址:https://www.cnblogs.com/nysanier/p/2432512.html
Copyright © 2011-2022 走看看