Math源码java_深入学习java源码之Math.sin()与 Math.sqrt()

深入学习java源码之Math.sin()与 Math.sqrt()

native关键字

凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,称为JNI

native关键字告诉编译器(其实是JVM)调用的是该方法在外部定义,这里指的是C。

Modifier and TypeMethod and Descriptionstatic doubleacos(double a) 返回值的反余弦值; 返回的角度在0.0到pi的范围内。 static intaddExact(int x, int y) 返回其参数的总和,如果结果溢出int,则抛出 int 。 static longaddExact(long x, long y) 返回其参数的总和,如果结果溢出long,则抛出 long 。 static doubleasin(double a) 返回值的正弦值; 返回角度在pi / 2到pi / 2的范围内。 static doubleatan(double a) 返回值的反正切值; 返回角度在pi / 2到pi / 2的范围内。 static doubleatan2(double y, double x) 返回从直角坐标(转换角度 theta x , y )为极坐标 (R,θ-)。 static doublecbrt(double a) 返回 double值的多维数据集根。 static doubleceil(double a) 返回大于或等于参数的最小(最接近负无穷大) double值,等于一个数学整数。 static doublecopySign(double magnitude, double sign) 使用第二个浮点参数的符号返回第一个浮点参数。 static floatcopySign(float magnitude, float sign) 使用第二个浮点参数的符号返回第一个浮点参数。 static doublecos(double a) 返回角度的三角余弦。 static doublecosh(double x) 返回的双曲余弦 double值。 static doubleexp(double a) 返回欧拉的数字 e提高到一个 double价值。 static doubleexpm1(double x) 返回 e x -1。 static doublehypot(double x, double y) 返回sqrt( x 2 + y 2 ),没有中间溢出或下溢。 static doublelog(double a) 返回的自然对数(以 e为底) double值。 static doublelog10(double a) 返回一个 double的基数10对数值。 static doublelog1p(double x) 返回参数和1的和的自然对数。 static doublepow(double a, double b) 将第一个参数的值返回到第二个参数的幂。 static doublerandom() 返回值为 double值为正号,大于等于 0.0 ,小于 1.0 。 static doublerint(double a) 返回与参数最接近值的 double值,并且等于数学整数。 static longround(double a) 返回参数中最接近的 long ,其中 long四舍五入为正无穷大。 static intround(float a) 返回参数中最接近的 int ,其中 int四舍五入为正无穷大。 static doublesin(double a) 返回角度的三角正弦。 static doublesinh(double x) 返回的双曲正弦 double值。 static doublesqrt(double a) 返回的正确舍入正平方根 double值。 static doubletan(double a) 返回角度的三角正切。 static doubletanh(double x) 返回的双曲正切 double值。 static doubleulp(double d) 返回参数的ulp的大小。 static floatulp(float f) 返回参数的ulp的大小。

java源码

public final class Math {

private Math() {}

public static final double E = 2.7182818284590452354;

public static final double PI = 3.14159265358979323846;

public static double sin(double a) {

return StrictMath.sin(a); // default impl. delegates to StrictMath

}

public static double cos(double a) {

return StrictMath.cos(a); // default impl. delegates to StrictMath

}

public static double tan(double a) {

return StrictMath.tan(a); // default impl. delegates to StrictMath

}

public static double asin(double a) {

return StrictMath.asin(a); // default impl. delegates to StrictMath

}

public static double acos(double a) {

return StrictMath.acos(a); // default impl. delegates to StrictMath

}

public static double atan(double a) {

return StrictMath.atan(a); // default impl. delegates to StrictMath

}

public static double exp(double a) {

return StrictMath.exp(a); // default impl. delegates to StrictMath

}

public static double log(double a) {

return StrictMath.log(a); // default impl. delegates to StrictMath

}

public static double log10(double a) {

return StrictMath.log10(a); // default impl. delegates to StrictMath

}

public static double sqrt(double a) {

return StrictMath.sqrt(a); // default impl. delegates to StrictMath

// Note that hardware sqrt instructions

// frequently can be directly used by JITs

// and should be much faster than doing

// Math.sqrt in software.

}

public static double cbrt(double a) {

return StrictMath.cbrt(a);

}

public static double IEEEremainder(double f1, double f2) {

return StrictMath.IEEEremainder(f1, f2); // delegate to StrictMath

}

public static double atan2(double y, double x) {

return StrictMath.atan2(y, x); // default impl. delegates to StrictMath

}

public static double pow(double a, double b) {

return StrictMath.pow(a, b); // default impl. delegates to StrictMath

}

public static double sinh(double x) {

return StrictMath.sinh(x);

}

public static double cosh(double x) {

return StrictMath.cosh(x);

}

public static double tanh(double x) {

return StrictMath.tanh(x);

}

public static double hypot(double x, double y) {

return StrictMath.hypot(x, y);

}

public static double expm1(double x) {

return StrictMath.expm1(x);

}

public static double log1p(double x) {

return StrictMath.log1p(x);

}

}

public final class StrictMath {

private StrictMath() {}

public static final double E = 2.7182818284590452354;

public static final double PI = 3.14159265358979323846;

public static native double sin(double a);

public static native double cos(double a);

public static native double tan(double a);

public static native double asin(double a);

public static native double acos(double a);

public static native double atan(double a);

public static strictfp double toRadians(double angdeg) {

// Do not delegate to Math.toRadians(angdeg) because

// this method has the strictfp modifier.

return angdeg / 180.0 * PI;

}

public static strictfp double toDegrees(double angrad) {

// Do not delegate to Math.toDegrees(angrad) because

// this method has the strictfp modifier.

return angrad * 180.0 / PI;

}

public static native double exp(double a);

public static native double log(double a);

public static native double log10(double a);

public static native double sqrt(double a);

public static native double cbrt(double a);

public static native double IEEEremainder(double f1, double f2);

public static native double atan2(double y, double x);

public static native double pow(double a, double b);

public static native double sinh(double x);

public static native double cosh(double x);

public static native double tanh(double x);

public static native double hypot(double x, double y);

public static native double expm1(double x);

public static native double log1p(double x);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路由控制器Express的路由控制方法

MVC中的C控制器 express的路由控制方法:1.创建路由规则 var express require(‘express’); var router express.Router(); /* get home page.*/ router.get(/, function(req,res){ res.render(index, title:express); }); module.exports router; 服务器在开始…

URAL 1146 Maximum Sum(最大子矩阵的和 DP)

Maximum Sum 大意:给你一个n*n的矩阵,求最大的子矩阵的和是多少。 思路:最開始我想的是预处理矩阵,遍历子矩阵的端点,发现复杂度是O(n^4)。就不知道该怎么办了。问了一下,是压缩矩阵,转换成最大…

基于 axios 的 Vue 项目 http 请求优化

对于需要大量使用 http 请求的项目,我们通常会选择对 http 请求的方法进行二次封装,以便增加统一的拦截器,或者统一处理阻止重复提交之类的逻辑。Vue.js 的项目中我们选择使用了 axios 这样一个 http 库,下面也就简述下基于 axios…

Spring 事务配置5种方式

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化&…

java中主线程首先执行_java经典面试题:子线程先运行30次主线程,主线程40次,如此循环50次?...

最近偶遇这道题,网上相似的题都是循环次数不一样。然而我百度搜到的论坛或者博客感觉都不太对,运行有穿插。请给出正确结果。我们假使所有人都引入了业务对象。并且我有疑问?感觉题目本意不是new Thread()放在前面。网上有人做法是用标志位防…

[翻译]Feedback on the Go Challenge solutions

第一次Go Challenge比赛,中国区只有3人参赛。 赛后收到邮件,是一个审阅者的反馈,“Feedback on the Go Challenge solutions”,摘录如下: 保持简单粗暴 一个语义单元一个文件即可,不要像Java那样一个文件就…

黑客宣称掌握了600多万个Instagram账号的信息

据外媒报道,上周早些时候,歌手兼演员赛琳娜戈麦斯因Instagram账号被盗而发出大量来自前男友贾斯汀比伯的裸照。不过当时很快赛琳娜就拿回了对账号的控制权并删掉了这些裸照。就在大家以为这件事情已经平息的时候,Instagram却被曝光了一个极为…

java apache.poi_Java Apache POI

我正在努力从excel文档中读取数据,该文档每两周更新一次,大约有50,000行数据,在开始新工作表之前可能会达到大约120,000.我正在使用Apache POI来获取数据.我在下面得到了这个例外,但我认为最重要的一个例外是引起:java.lang.OutOfMemoryError:Java堆空间…

Hibernate逍遥游记-第2章-使用hibernate.properties

1. 1 package mypack;2 3 import org.hibernate.*;4 import org.hibernate.cfg.Configuration;5 import java.util.*;6 7 public class BusinessService{8 public static SessionFactory sessionFactory;9 10 /** 初始化Hibernate,创建SessionFactory实例 */1…

奇怪吸引子---Aizawa

奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性、稳定性、吸引性。吸引子是一个数学概念,描写运动的收敛类型。它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集…

C#打印图片

打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了! C#实现打印源码如下: #region 打印 …

mysql 里面不等于符号_mysql 不等于 符号写法

经过测试发现mysql中用<>与!都是可以的&#xff0c;但sqlserver中不识别!,所以建议用<>selece * from jb51 where id<>45sql 里 符号<> 于 ! 的区别<> 与!都是不等于的意思&#xff0c;但是一般都是用<>来代码不等于因为<>在任何SQL…

Delphi通过ICMP检测与远程主机连接

{ ping IP 地址&#xff08;返回false or true&#xff09; 2015-03-23} function PingHost(HostIP: String): Boolean; typePIPOptionInformation ^TIPOptionInformation;TIPOptionInformation packed recordTTL:Byte;TOS:Byte;Flags:Byte;OptionsSize:Byte;OptionsData:PC…

安装SQL2012出现[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1

本人安装SQL2012出现这个错误&#xff0c;找了三天三夜&#xff0c;终于把问题找出来&#xff0c;共享给有需要的人们&#xff0c;不用重新换系统 错误如下: 1&#xff0c;此问题是系统.net Framework版本冲突&#xff0c;首先下载.net Framework清理工具&#xff08;如:cleanu…

Java学习笔记之equals和Objects.equals

equals 相信大家就知道&#xff0c;就是比较&#xff0c;我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同&#xff0c;例如这样 public class Person {private String name; //姓名private int age; //年龄private String nickName; //昵称public Per…

java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...

注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印。我第一次就没注意上传了一张有水印的营业执照&#xff0c;从此这个账号再也没有审核通过了&#xff0c;后面只能换个账号。都是后台人工审核的&#xff0c;比较严格。如果时…

GDKOI2015 Day2

P1 题目描述&#xff1a; 给出一个二分图&#xff0c;选择互不相交的边&#xff0c;使得边覆盖的点权和最大。 solution&#xff1a; 简单DP&#xff0c;用树状数组维护最大值。 时间复杂度&#xff1a;$O(n \log n) $ P2 题目描述&#xff1a; 给出N个或黑或白的元素&#xff…

写在SDOI2016Round1前的To Do List

理性的整理了一下自己的不足。 计算几何啥都不会&#xff0c;字符串类DP毫无练习&#xff0c;数据结构写的不熟&#xff0c;数论推不出式子&#xff0c;网络流建模常建残&#xff1b; 需要达成的任务&#xff1a; 一、网络流&#xff1a; 熟练网络流的板子&#xff08;之前一…

XMind入门教程

最近在总结一些框架知识的时候&#xff0c;总找不到一款好的软件来画流程图&#xff0c;后来在网上查找这方面的东西&#xff0c;找到了 XMind,发现用来画思维导图还挺好的&#xff0c;看起来思路清晰&#xff0c;美观。那么便将使用的一些经验分享给大家。 1、什么是思维导图&…

标签与表格

bgcolor 页面背景色 text 文字颜色 topmargain 上页边距 leftmargain 左页边距 rightmargain 右页边距 bottomargain 下页边距 background 背景壁纸 &nbsp 空…