算术运算符

以下算术运算符支持所有的原始数值类型:

表达式 名称 描述
+x 一元加法运算符 全等操作
-x 一元减法运算符 将值变为其相反数
x + y 二元加法运算符 执行加法
x - y 二元减法运算符 执行减法
x * y 乘法运算符 执行乘法
x / y 除法运算符 执行除法
x ÷ y 整除 取 x / y 的整数部分
x \ y 反向除法 等价于 y / x
x ^ y 幂操作符 xy 次幂
x % y 取余 等价于 rem(x,y)

以及对 Bool 类型的否定:

表达式 名称 描述
!x 否定

truefalse 互换

算术运算符的部分和python基本一致,只有几个地方要注意一下。

x ÷ y 整除 取 x / y 的整数部分
x \ y 反向除法 等价于 y / x
x ^ y 幂操作符 xy 次幂

这三个部分是和python不一致的,但julia中的运算符表示似乎更符合常识,也挺好记的。

位运算符

所有原始整数类型都支持以下位运算符:

表达式 名称
~x 按位取反
x & y 按位与
x | y 按位或
x ⊻ y 按位异或(逻辑异或)
x >>> y 逻辑右移
x >> y 算术右移
x << y 逻辑/算术左移

位运算符和C语言中基本一致,除了按位异或(逻辑异或)符看上去有些诡异。这个符号是"\xor"加Tab键打出来的,这样记好像也不难理解。

复合赋值运算符

每一个二元运算符和位运算符都可以给左操作数复合赋值:方法是把 = 直接放在二元运算符后面。比如,x += 3 等价于 x = x + 3

julia> x = 1
1julia> x += 3
4julia> x
4

二元运算和位运算的复合赋值操作符有下面几种:

+=  -=  *=  /=  \=  ÷=  %=  ^=  &=  |=  ⊻=  >>>=  >>=  <<=

这里就不赘述了,和C 语言完全一样。

有一点需要注意一下,这些是双目运算符,最后会把值赋值到左操作数上,因此可能会改变变量类型

julia> x=2
2julia> typeof(ans)
Int64julia> x *= 0.01
2julia> typeof(ans)
Float64

向量化dot运算符

julia中,每个二元运算符都有一个dot运算符和它对应,表示的含义是逐元素的和后面的操作数进行运算。

julia> [1,2,3] .^ 3
3-element Array{Int64,1}:1827

需要注意的一点是:

将点运算符用于数值字面量可能会导致歧义。例如,1.+x 到底是表示 1. + x 还是 1 .+ x?这会令人疑惑。因此不允许使用这种语法,遇到这种情况时,必须明确地用空格消除歧义。

数值比较

标准的比较操作对所有原始数值类型有定义:

操作符 名称
== 相等
!=, 不等
< 小于
<=, 小于等于
> 大于
>=, 大于等于

和现在主流的热门语言的都一样,我就不赘述了。

注意:

整数的比较方式是标准的按位比较,而浮点数的比较方式则遵循 IEEE 754 标准。

  • 有限数的大小顺序,和我们所熟知的相同。
  • +0 等于但不大于 -0.
  • Inf 等于自身,并且大于除了 NaN 外的所有数。
  • -Inf 等于自身,并且小于除了 NaN 外的所有数。
  • NaN 不等于、不小于且不大于任何数值,包括它自己。

NaN 不等于它自己这一点可能会令人感到惊奇,所以需要注意:

julia> NaN == NaN
falsejulia> NaN != NaN
truejulia> NaN < NaN
falsejulia> NaN > NaN
false

由于 NaN 的存在,在做数组比较时会特别头疼:

julia> [1 NaN] == [1 NaN]
false

为此,Julia 给这些特别的数提供了下面几个额外的测试函数。这些函数在某些情况下很有用处,比如在做 hash 比较时。

函数 测试是否满足如下性质
isequal(x, y) xy 是完全相同的
isfinite(x) x 是有限大的数字
isinf(x) x 是(正/负)无穷大
isnan(x) xNaN

isequal 认为 NaN 之间是相等的:

julia> isequal(NaN, NaN)
truejulia> isequal([1 NaN], [1 NaN])
truejulia> isequal(NaN, NaN32)
true

isequal 也能用来区分带符号的零:

julia> -0.0 == 0.0
truejulia> isequal(-0.0, 0.0)
false

有符号整数、无符号整数以及浮点数之间的混合类型比较是很棘手的。开发者费了很大精力来确保 Julia 在这个问题上做的是正确的。

对于其它类型,isequal 会默认调用 ==,所以如果你想给自己的类型定义相等,那么就只需要为 == 增加一个方法。如果你想定义一个你自己的相等函数,你可能需要定义一个对应的 hash 方法,用于确保 isequal(x,y) 隐含着 hash(x) == hash(y)

另外julia支持链式比较,连等,连大于,连小于,连大于等于,连。。。

Julia-数学运算和初等函数相关推荐

  1. Julia 数学运算和初等函数

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 Julia数学运算和初等函数 1.算数运算符 julia> 5+9 14 julia> 9-5 4 julia> 5*9 4 ...

  2. julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算

    数学运算https://www.zhihu.com/video/1113554595376295936 数学运算 比Matlab更直观的数学表达方式 x = 10 2x >>20 但这就导 ...

  3. 取余运算怎么算_3 数学运算 矩阵操作

    数学运算 比Matlab更直观的数学表达方式 x = 102x>>20 但这就导致了可能会出现语法的冲突 十六进制整数文本表达式 0xff 可以被解析为数值文本 0 乘以变量 xff 浮点 ...

  4. smali to java_Smali —— 数学运算,条件判断,循环

    通过上一篇 Smali 语法解析--Hello World 的学习,了解了 Smali 文件的基本格式.这一篇从最基本的数学运算,条件判断,循环等开始,更加详细的了解 Smali 语法. 数学运算 加 ...

  5. 只会高中数学运算就能发现算法?Google开源的AutoML-Zero有多厉害

    译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 机器学习研究,已经在多个方面都取得了进步,包括模型结构和优化方法等.而使此类研究自动化的工作(称为AutoML)也有重大进展.这一 ...

  6. 谷歌AutoML新进展,进化算法加持,仅用数学运算自动找出ML算法

    机器之心报道 参与:魔王.杜伟.小舟 授权转载自公众号机器之心 仅使用基础数学运算就能自动搜索机器学习算法?谷歌 Quoc V. Le 等人提出了 AutoML-Zero 方法. AutoML-Zer ...

  7. 最后的分的计算机公式,省考最后10天!掌握这些数学运算公式,提分!

    2019年山东公务员考试4月20日笔试,目前的复习时间已经不多了.为帮助大家冲刺复习,突破数学运算这一难关,山东公务员考试网(www.sdgwy.org)总结了数学运算必背公式,大家可学习记忆. 1. ...

  8. P2759 奇怪的函数(二分答案,数学运算)

    P2759 奇怪的函数 范围2e92e92e9,直接枚举肯定超时,正着直接求答案求不出来,那么运用逆向思维,直接二分答案判断即可.这道题涉及简单的数学运算. 要xx>=nx^x>=nxx& ...

  9. python中mod运算符_Python中的数学运算操作符使用进阶

    Python中对象的行为是由它的类型 (Type) 决定的.所谓类型就是支持某些特定的操作.数字对象在任何编程语言中都是基础元素,支持加.减.乘.除等数学操作. Python的数字对象有整数和浮点数, ...

  10. Java中sin、log、tan等复杂数学运算怎么搞?

    MXReflection,一个基于mXparser库功能的Java复杂计算框架. 还记不记得求学时代各种复杂的数学公式?sin.log2.tan等等等,是不是看到这就觉得算起来麻烦? 通过MXRefl ...

最新文章

  1. 计算机主板时钟,主板时钟电路工作原理
  2. Android应用开发-所有课堂代码
  3. 基于函数计算的游戏打包最佳实践
  4. UVALive 3942 Remember the Word(字典树+DP)
  5. MOSS服务器场迁移1-有关切换登录用户时需要刷新一次才能成功的问题
  6. 大数据Hadoop集群中常用的任务调度框架
  7. Python使用for循环打印直角三角形、九九乘法表、金字塔
  8. android清理缓存动画、天气APP、购物下单选择器、阅读APP、饿了么demo等源码
  9. 论文赏析[EMNLP19]如何在Transformer中融入句法树信息?这里给出了一种解决方案
  10. 限制UITextView输入字数(兼容iOS7)
  11. 酷Q插件dll 加载失败!错误:缺失AppInfo返回的AppID(york.1996.com)对应的文件(-110)
  12. 数学分析教程(科大)——4.3笔记+习题
  13. Dilated Convolution(空洞卷积、膨胀卷积)详解
  14. java的regex_java regex 简单使用
  15. ArcGIS Pro建立三维模型(三维渲染)
  16. 在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足
  17. vue 修改模板{{}}标签_vue.js - Vue单文件的template标签
  18. “支付清算”之信息流与资金流
  19. 家里的老电脑,是升级硬件好,还是重新买一个好?
  20. Axure 放大与缩小

热门文章

  1. 《数据虚拟化:商务智能系统的数据架构与管理》一 1.8 数据虚拟化的不同实现...
  2. 软件构建--系统设计
  3. LInux终端中Ctrl+S卡死
  4. 接口 与 抽象类 区别
  5. 什么是我想要守护的东西?
  6. 睡眠排序、面条排序、猴子排序...........................
  7. C#.NET自定义报表数据打印
  8. Maven生命周期和插件
  9. nginx 504 Gateway Time-out 解决办法
  10. HTTP Error 404 - File or Directory not found caused by ISAPI filter of Sharepoint