Mathematics

Mathematical Operators

Base.:-Method
-(x)

単項マイナス演算子。

参照: abs, flipsign

julia> -1
-1

julia> -(2)
-2

julia> -[1 2; 3 4]
2×2 Matrix{Int64}:
 -1  -2
 -3  -4

julia> -(true)  # Intに昇格
-1

julia> -(0x003)
0xfffd
source
Base.:+Function
dt::Date + t::Time -> DateTime

DateTime の加算は DateTime を生成します。Time の時間、分、秒、およびミリ秒の部分は、Date の年、月、日とともに使用されて新しい DateTime を作成します。Time 型の非ゼロのマイクロ秒またはナノ秒は、InexactError をスローします。

source
+(x, y...)

加算演算子。

中置 x+y+z+... はこの関数をすべての引数で呼び出します。すなわち、+(x, y, z, ...) であり、デフォルトでは (x+y) + z + ... を左から始めて呼び出します。

大きな数を加算する際、デフォルトの Int を含むほとんどの整数型ではオーバーフローが発生する可能性があることに注意してください。

julia> 1 + 20 + 4
25

julia> +(1, 20, 4)
25

julia> [1,2] + [3,4]
2-element Vector{Int64}:
 4
 6

julia> typemax(Int) + 1 < 0
true
source
Base.:-Method
-(x, y)

減算演算子。

julia> 2 - 3
-1

julia> -(2, 4.5)
-2.5
source
Base.:*Method
*(x, y...)

乗算演算子。

中置 x*y*z*... はこの関数をすべての引数で呼び出します。すなわち *(x, y, z, ...) であり、デフォルトでは (x*y) * z * ... と左から始まります。

隣接記法 2pi*(2, pi) を呼び出します。この操作はリテラル * よりも優先度が高いことに注意してください。また、隣接記法 "0x..."(変数名が x で始まる変数の整数ゼロ倍)は、符号なし整数リテラルと衝突するため禁止されています:0x01 isa UInt8

大きな数を掛け算する際、デフォルトの Int を含むほとんどの整数型でオーバーフローが発生する可能性があることに注意してください。

julia> 2 * 7 * 8
112

julia> *(2, 7, 8)
112

julia> [2 0; 0 3] * [1, 10]  # 行列 * ベクトル
2-element Vector{Int64}:
  2
 30

julia> 1/2pi, 1/2*pi  # 隣接記法は優先度が高い
(0.15915494309189535, 1.5707963267948966)

julia> x = [1, 2]; x'x  # 隣接ベクトル * ベクトル
5
source
Base.:/Function
/(x, y)

右割り算演算子: y の逆数を右側で x に掛ける。

整数引数に対して浮動小数点結果を返します。整数除算については ÷ を、Rational 結果については // を参照してください。

julia> 1/2
0.5

julia> 4/2
2.0

julia> 4.5/2
2.25
source
A / B

行列の右除算: A / B(B' \ A')' に相当し、ここで \ は左除算演算子です。正方行列の場合、結果 XA == X*B となります。

関連情報: rdiv!

julia> A = Float64[1 4 5; 3 9 2]; B = Float64[1 4 2; 3 4 2; 8 7 1];

julia> X = A / B
2×3 Matrix{Float64}:
 -0.65   3.75  -1.2
  3.25  -2.75   1.0

julia> isapprox(A, X*B)
true

julia> isapprox(X, A*pinv(B))
true
source
Base.:\Method
\(x, y)

左除算演算子:x の逆数による y の左側の乗算。整数引数に対して浮動小数点結果を返します。

julia> 3 \ 6
2.0

julia> inv(3) * 6
2.0

julia> A = [4 3; 2 1]; x = [5, 6];

julia> A \ x
2-element Vector{Float64}:
  6.5
 -7.0

julia> inv(A) * x
2-element Vector{Float64}:
  6.5
 -7.0
source
Base.:^Method
^(x, y)

累乗演算子。

xy が整数の場合、結果がオーバーフローする可能性があります。科学的表記法で数値を入力するには、1.2 * 10^3 の代わりに Float64[@ref] リテラルのように 1.2e3 を使用してください。

yInt リテラル(例:x^22x^-3-3)である場合、Julia コード x^y はコンパイラによって Base.literal_pow(^, x, Val(y)) に変換され、指数の値に対するコンパイル時の特化が可能になります。(デフォルトのフォールバックとして、Base.literal_pow(^, x, Val(y)) = ^(x,y) があり、通常 ^ == Base.^ ですが、呼び出し名前空間で ^ が定義されている場合は除きます。)y が負の整数リテラルである場合、デフォルトでは Base.literal_pow は操作を inv(x)^-y に変換します。ここで -y は正の値です。

他に exp2<< も参照してください。

julia> 3^5
243

julia> 3^-1  # Base.literal_pow を使用
0.3333333333333333

julia> p = -1;

julia> 3^p
ERROR: DomainError with -1:
整数 x を負の累乗 -1 にすることはできません。
[...]

julia> 3.0^p
0.3333333333333333

julia> 10^19 > 0  # 整数オーバーフロー
false

julia> big(10)^19 == 1e19
true
source
Base.fmaFunction
fma(x, y, z)

x*y+zを計算しますが、中間結果x*yの丸めを行いません。一部のシステムでは、x*y+zよりもかなり高価です。fmaは特定のアルゴリズムでの精度を向上させるために使用されます。muladdを参照してください。

source
Base.muladdFunction
muladd(x, y, z)

結合乗算加算: x*y+z を計算しますが、加算と乗算を互いに、または周囲の操作と統合してパフォーマンスを向上させることができます。たとえば、ハードウェアが効率的にサポートしている場合、これは fma として実装されることがあります。結果は異なるマシンで異なる場合があり、定数伝播やその他の最適化により同じマシンでも異なる場合があります。詳細は fma を参照してください。

julia> muladd(3, 2, 1)
7

julia> 3 * 2 + 1
7
source
muladd(A, y, z)

組み合わせた乗算加算、A*y .+ z、行列-行列または行列-ベクトルの乗算のためのものです。結果は常に A*y と同じサイズですが、z は小さいか、スカラーである可能性があります。

Julia 1.6

これらのメソッドはJulia 1.6以降が必要です。

julia> A=[1.0 2.0; 3.0 4.0]; B=[1.0 1.0; 1.0 1.0]; z=[0, 100];

julia> muladd(A, B, z)
2×2 Matrix{Float64}:
   3.0    3.0
 107.0  107.0
source
Base.invMethod
inv(x)

xの乗法逆数を返します。すなわち、x*inv(x)またはinv(x)*xone(x)(乗法単位元)を丸め誤差まで返すようにします。

xが数値である場合、これは本質的にone(x)/xと同じですが、いくつかの型に対してはinv(x)の方がわずかに効率的である場合があります。

julia> inv(2)
0.5

julia> inv(1 + 2im)
0.2 - 0.4im

julia> inv(1 + 2im) * (1 + 2im)
1.0 + 0.0im

julia> inv(2//3)
3//2
Julia 1.2

inv(::Missing)は少なくともJulia 1.2が必要です。

source
Base.divFunction
div(x, y)
÷(x, y)

ユークリッド(整数)除算からの商。一般的には小数部分のない数学的操作 x/y に相当します。

参照: cld, fld, rem, divrem

julia> 9 ÷ 4
2

julia> -5 ÷ 3
-1

julia> 5.0 ÷ 2
2.0

julia> div.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) with eltype Int64:
 -1  -1  -1  0  0  0  0  0  1  1  1
source
Base.divMethod
div(x, y, r::RoundingMode=RoundToZero)

ユークリッド(整数)除算からの商。x / yを計算し、丸めモードrに従って整数に丸めます。言い換えれば、数量は

round(x / y, r)

中間的な丸めなしで。

Julia 1.4

RoundingModeを取る三引数メソッドは、Julia 1.4以降が必要です。

他にfldcldも参照してください。これらはこの関数の特別なケースです。

Julia 1.9

RoundFromZeroは少なくともJulia 1.9が必要です。

例:

julia> div(4, 3, RoundToZero) # div(4, 3)と一致
1
julia> div(4, 3, RoundDown) # fld(4, 3)と一致
1
julia> div(4, 3, RoundUp) # cld(4, 3)と一致
2
julia> div(5, 2, RoundNearest)
2
julia> div(5, 2, RoundNearestTiesAway)
3
julia> div(-5, 2, RoundNearest)
-2
julia> div(-5, 2, RoundNearestTiesAway)
-3
julia> div(-5, 2, RoundNearestTiesUp)
-2
julia> div(4, 3, RoundFromZero)
2
julia> div(-4, 3, RoundFromZero)
-2
source
Base.fldFunction
fld(x, y)

x / y 以下の最大整数。div(x, y, RoundDown) と同等です。

関連項目 div, cld, fld1

julia> fld(7.3, 5.5)
1.0

julia> fld.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) with eltype Int64:
 -2  -2  -1  -1  -1  0  0  0  1  1  1

fld(x, y) は浮動小数点数の真の値に基づいて厳密に正しい切り下げ丸めを実装しているため、直感に反する状況が発生することがあります。例えば:

julia> fld(6.0, 0.1)
59.0
julia> 6.0 / 0.1
60.0
julia> 6.0 / big(0.1)
59.99999999999999666933092612453056361837965690217069245739573412231113406246995

ここで起こっているのは、0.1 として書かれた浮動小数点数の真の値が数値的な値 1/10 よりもわずかに大きい一方で、6.0 は数値 6 を正確に表しているということです。したがって、6.0 / 0.1 の真の値は 60 よりもわずかに小さいです。除算を行うと、これは正確に 60.0 に丸められますが、fld(6.0, 0.1) は常に真の値の切り下げを取るため、結果は 59.0 になります。

source
Base.cldFunction
cld(x, y)

x / y以上の最小の整数。div(x, y, RoundUp)と同等です。

関連項目としてはdivfldがあります。

julia> cld(5.5, 2.2)
3.0

julia> cld.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) with eltype Int64:
 -1  -1  -1  0  0  0  1  1  1  2  2
source
Base.modFunction
mod(x::Integer, r::AbstractUnitRange)

範囲 r の中で y を見つけます。ここで $x ≡ y (mod n)$ であり、n = length(r) です。すなわち、y = mod(x - first(r), n) + first(r) です。

詳細は mod1 を参照してください。

julia> mod(0, Base.OneTo(3))  # mod1(0, 3)
3

julia> mod(3, 0:2)  # mod(3, 3)
0
Julia 1.3

このメソッドは少なくとも Julia 1.3 を必要とします。

source
mod(x, y)
rem(x, y, RoundDown)

xyで割った剰余、または同等に、yでの切り捨て除算の後のxの余り、すなわち、x - y*fld(x,y)を中間的な丸めなしで計算した場合。

結果はyと同じ符号を持ち、abs(y)よりも小さい(いくつかの例外があります。以下の注記を参照してください)。

Note

浮動小数点値で使用される場合、正確な結果は型で表現できない場合があり、そのため丸め誤差が発生する可能性があります。特に、正確な結果がyに非常に近い場合、それはyに丸められることがあります。

参照: rem, div, fld, mod1, invmod

julia> mod(8, 3)
2

julia> mod(9, 3)
0

julia> mod(8.9, 3)
2.9000000000000004

julia> mod(eps(), 3)
2.220446049250313e-16

julia> mod(-eps(), 3)
3.0

julia> mod.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) with eltype Int64:
 1  2  0  1  2  0  1  2  0  1  2
source
rem(x::Integer, T::Type{<:Integer}) -> T
mod(x::Integer, T::Type{<:Integer}) -> T
%(x::Integer, T::Type{<:Integer}) -> T

y::T を見つけます。ここで xy (mod n) であり、n は T で表現可能な整数の数で、y[typemin(T),typemax(T)] の範囲内の整数です。もし T が任意の整数を表現できる場合(例: T == BigInt)、この操作は T への変換に対応します。

julia> x = 129 % Int8
-127

julia> typeof(x)
Int8

julia> x = 129 % BigInt
129

julia> typeof(x)
BigInt
source
Base.remFunction
rem(x, y)
%(x, y)

ユークリッド除算からの余りで、x と同じ符号を持ち、y よりも小さい絶対値の値を返します。この値は常に正確です。

参照: div, mod, mod1, divrem

julia> x = 15; y = 4;

julia> x % y
3

julia> x == div(x, y) * y + rem(x, y)
true

julia> rem.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) with eltype Int64:
 -2  -1  0  -2  -1  0  1  2  0  1  2
source
Base.remMethod
rem(x, y, r::RoundingMode=RoundToZero)

yで整数除算した後のxの余りを計算します。商は丸めモードrに従って丸められます。言い換えれば、量は

x - y * round(x / y, r)

中間の丸めなしで計算されます。

  • r == RoundNearestの場合、結果は正確で、区間$[-|y| / 2, |y| / 2]$にあります。詳細はRoundNearestを参照してください。
  • r == RoundToZero(デフォルト)の場合、結果は正確で、xが正の場合は区間$[0, |y|)$、それ以外の場合は$(-|y|, 0]$にあります。詳細はRoundToZeroを参照してください。
  • r == RoundDownの場合、結果はyが正の場合は区間$[0, y)$、それ以外の場合は$(y, 0]$にあります。xyの符号が異なり、abs(x) < abs(y)の場合、結果は正確でない可能性があります。詳細はRoundDownを参照してください。
  • r == RoundUpの場合、結果はyが正の場合は区間$(-y, 0]$、それ以外の場合は$[0, -y)$にあります。xyの符号が同じで、abs(x) < abs(y)の場合、結果は正確でない可能性があります。詳細はRoundUpを参照してください。
  • r == RoundFromZeroの場合、結果はyが正の場合は区間$(-y, 0]$、それ以外の場合は$[0, -y)$にあります。xyの符号が同じで、abs(x) < abs(y)の場合、結果は正確でない可能性があります。詳細はRoundFromZeroを参照してください。
Julia 1.9

RoundFromZeroは少なくともJulia 1.9が必要です。

例:

julia> x = 9; y = 4;

julia> x % y  # rem(x, y)と同じ
1

julia> x ÷ y  # div(x, y)と同じ
2

julia> x == div(x, y) * y + rem(x, y)
true
source
Base.Math.rem2piFunction
rem2pi(x, r::RoundingMode)

xで整数除算した後の余りを計算します。商は丸めモードrに従って丸められます。言い換えれば、量は

x - 2π*round(x/(2π),r)

中間的な丸めなしで計算されます。内部的にはの高精度近似を使用しており、したがってrem(x,2π,r)よりも正確な結果が得られます。

  • r == RoundNearestの場合、結果は区間$[-π, π]$にあります。これは一般的に最も正確な結果となります。詳細はRoundNearestを参照してください。
  • r == RoundToZeroの場合、結果はxが正の場合は区間$[0, 2π]$に、そうでない場合は$[-2π, 0]$にあります。詳細はRoundToZeroを参照してください。
  • r == RoundDownの場合、結果は区間$[0, 2π]$にあります。詳細はRoundDownを参照してください。
  • r == RoundUpの場合、結果は区間$[-2π, 0]$にあります。詳細はRoundUpを参照してください。

julia> rem2pi(7pi/4, RoundNearest)
-0.7853981633974485

julia> rem2pi(7pi/4, RoundDown)
5.497787143782138
source
Base.Math.mod2piFunction
mod2pi(x)

で割った後の剰余を計算し、範囲$[0,2π)$で返します。

この関数は、数値的に正確なで割った後の剰余の浮動小数点表現を計算するため、浮動小数点数で割った場合の剰余を計算するmod(x,2π)とは正確には同じではありません。

Note

入力値の形式によっては、に最も近い表現可能な値がより小さい場合があります。たとえば、式mod2pi(2π)0を返しません。なぜなら、2*πの中間値がFloat64であり、2*Float64(π) < 2*big(π)だからです。この動作のより洗練された制御については、rem2piを参照してください。

julia> mod2pi(9*pi/4)
0.7853981633974481
source
Base.divremFunction
divrem(x, y, r::RoundingMode=RoundToZero)

ユークリッド除算からの商と余り。(div(x, y, r), rem(x, y, r))と同等です。同様に、rのデフォルト値を使用した場合、この呼び出しは(x ÷ y, x % y)と同等です。

参照: fldmod, cld

julia> divrem(3, 7)
(0, 3)

julia> divrem(7, 3)
(2, 1)
source
Base.fldmodFunction
fldmod(x, y)

除算後の切り捨てた商と剰余。divrem(x, y, RoundDown)の便利なラッパー。(fld(x, y), mod(x, y))と同等です。

関連項目: fld, cld, fldmod1.

source
Base.fld1Function
fld1(x, y)

フロア除算で、mod1(x,y) と一貫した値を返します。

関連情報として mod1fldmod1 を参照してください。

julia> x = 15; y = 4;

julia> fld1(x, y)
4

julia> x == fld(x, y) * y + mod(x, y)
true

julia> x == (fld1(x, y) - 1) * y + mod1(x, y)
true
source
Base.mod1Function
mod1(x, y)

床除算の後の剰余、正の y に対して範囲 $(0, y]$ で、負の y に対して範囲 $[y,0)$mod(r, y) == mod(x, y) となる値 r を返します。

整数引数と正の y の場合、これは mod(x, 1:y) と等しく、したがって1ベースのインデックスに対して自然です。比較すると、mod(x, y) == mod(x, 0:y-1) はオフセットやストライドを伴う計算に対して自然です。

他にも modfld1fldmod1 を参照してください。

julia> mod1(4, 2)
2

julia> mod1.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) with eltype Int64:
 1  2  3  1  2  3  1  2  3  1  2

julia> mod1.([-0.1, 0, 0.1, 1, 2, 2.9, 3, 3.1]', 3)
1×8 Matrix{Float64}:
 2.9  3.0  0.1  1.0  2.0  2.9  3.0  0.1
source
Base.://Function
//(num, den)

2つの整数または有理数を割り算し、Rational 結果を返します。より一般的には、// は整数または有理数の成分を持つ他の数値型、例えば整数成分を持つ複素数の正確な有理数割り算に使用できます。

浮動小数点数(AbstractFloat)の引数は // では許可されていません(たとえ値が有理数であっても)。引数は IntegerRational、またはそれらの合成型のサブタイプでなければなりません。

julia> 3 // 5
3//5

julia> (3 // 5) // (2 // 1)
3//10

julia> (1+2im) // (3+4im)
11//25 + 2//25*im

julia> 1.0 // 2
ERROR: MethodError: no method matching //(::Float64, ::Int64)
[...]
source
Base.rationalizeFunction
rationalize([T<:Integer=Int,] x; tol::Real=eps(x))

与えられた整数型のコンポーネントを持つ Rational 数として浮動小数点数 x を近似します。結果は x から tol 以上の差はありません。

julia> rationalize(5.6)
28//5

julia> a = rationalize(BigInt, 10.3)
103//10

julia> typeof(numerator(a))
BigInt
source
Base.numeratorFunction
numerator(x)

xの有理数表現の分子。

julia> numerator(2//3)
2

julia> numerator(4)
4
source
Base.denominatorFunction
denominator(x)

xの有理数表現の分母。

julia> denominator(2//3)
3

julia> denominator(4)
1
source
Base.:<<Function
<<(x, n)

左ビットシフト演算子、x << nn >= 0 の場合、結果は n ビットだけ左にシフトされた x で、0 で埋められます。これは x * 2^n と同等です。n < 0 の場合、これは x >> -n と同等です。

julia> Int8(3) << 2
12

julia> bitstring(Int8(3))
"00000011"

julia> bitstring(Int8(12))
"00001100"

関連項目 >>>>>exp2ldexp

source
<<(B::BitVector, n) -> BitVector

左ビットシフト演算子、B << nn >= 0 の場合、結果は B の要素が n ポジション後ろにシフトされ、false 値で埋められます。n < 0 の場合、要素は前方にシフトされます。B >> -n と同等です。

julia> B = BitVector([true, false, true, false, false])
5-element BitVector:
 1
 0
 1
 0
 0

julia> B << 1
5-element BitVector:
 0
 1
 0
 0
 0

julia> B << -1
5-element BitVector:
 0
 1
 0
 1
 0
source
Base.:>>Function
>>(x, n)

右ビットシフト演算子、x >> nn >= 0 の場合、結果は xn ビット右にシフトしたもので、x >= 0 の場合は 0 で埋め、x < 0 の場合は 1 で埋めて、x の符号を保持します。これは fld(x, 2^n) と同等です。n < 0 の場合、これは x << -n と同等です。

julia> Int8(13) >> 2
3

julia> bitstring(Int8(13))
"00001101"

julia> bitstring(Int8(3))
"00000011"

julia> Int8(-14) >> 2
-4

julia> bitstring(Int8(-14))
"11110010"

julia> bitstring(Int8(-4))
"11111100"

他にも >>><< を参照してください。

source
>>(B::BitVector, n) -> BitVector

右ビットシフト演算子、B >> nn >= 0 の場合、結果は B の要素が n ポジション前方にシフトされ、false 値で埋められます。n < 0 の場合、要素は後方にシフトされます。B << -n と同等です。

julia> B = BitVector([true, false, true, false, false])
5-element BitVector:
 1
 0
 1
 0
 0

julia> B >> 1
5-element BitVector:
 0
 1
 0
 1
 0

julia> B >> -1
5-element BitVector:
 0
 1
 0
 0
 0
source
Base.:>>>Function
>>>(x, n)

符号なし右ビットシフト演算子、x >>> nn >= 0 の場合、結果は xn ビット右にシフトし、0 で埋めます。n < 0 の場合、これは x << -n と同等です。

Unsigned 整数型に対しては、これは >> と同等です。Signed 整数型に対しては、これは signed(unsigned(x) >> n) と同等です。

julia> Int8(-14) >>> 2
60

julia> bitstring(Int8(-14))
"11110010"

julia> bitstring(Int8(60))
"00111100"

BigInt は無限のサイズを持つかのように扱われるため、埋める必要はなく、これは >> と同等です。

他に >><< も参照してください。

source
>>>(B::BitVector, n) -> BitVector

符号なし右ビットシフト演算子、B >>> nB >> nと同等です。詳細と例については>>を参照してください。

source
Base.bitrotateFunction
bitrotate(x::Base.BitInteger, k::Integer)

bitrotate(x, k) はビット単位の回転を実装します。これは、x のビットを左に k 回回転させた値を返します。k の負の値は右に回転します。

Julia 1.5

この関数は Julia 1.5 以降が必要です。

関連項目: <<, circshift, BitArray.

julia> bitrotate(UInt8(114), 2)
0xc9

julia> bitstring(bitrotate(0b01110010, 2))
"11001001"

julia> bitstring(bitrotate(0b01110010, -2))
"10011100"

julia> bitstring(bitrotate(0b01110010, 8))
"01110010"
source
Base.::Function
:expr

expr を引用し、expr の抽象構文木 (AST) を返します。AST は ExprSymbol、またはリテラル値のいずれかの型である可能性があります。構文 :identifierSymbol に評価されます。

参照: Expr, Symbol, Meta.parse

julia> expr = :(a = b + 2*x)
:(a = b + 2x)

julia> sym = :some_identifier
:some_identifier

julia> value = :0xff
0xff

julia> typeof((expr, sym, value))
Tuple{Expr, Symbol, UInt8}
source
Base.rangeFunction
range(start, stop, length)
range(start, stop; length, step)
range(start; length, stop, step)
range(;start, length, stop, step)

引数から均等に間隔を空けた要素を持つ特化型配列(AbstractRange)を構築します。数学的には、範囲は startstepstoplength のいずれか3つによって一意に決まります。範囲の有効な呼び出しは次の通りです:

  • startstepstoplength のいずれか3つを指定して range を呼び出します。
  • startstoplength のいずれか2つを指定して range を呼び出します。この場合、step は1であると仮定されます。両方の引数が整数である場合、UnitRange が返されます。
  • stop または length のいずれか1つを指定して range を呼び出します。この場合、startstep は1であると仮定されます。

返される型に関する詳細は拡張ヘルプを参照してください。また、対数間隔の点については logrange も参照してください。

julia> range(1, length=100)
1:100

julia> range(1, stop=100)
1:100

julia> range(1, step=5, length=100)
1:5:496

julia> range(1, step=5, stop=100)
1:5:96

julia> range(1, 10, length=101)
1.0:0.09:10.0

julia> range(1, 100, step=5)
1:5:96

julia> range(stop=10, length=5)
6:10

julia> range(stop=10, step=1, length=5)
6:1:10

julia> range(start=1, step=1, stop=10)
1:1:10

julia> range(; length = 10)
Base.OneTo(10)

julia> range(; stop = 6)
Base.OneTo(6)

julia> range(; stop = 6.5)
1.0:1.0:6.0

length が指定されておらず、stop - startstep の整数倍でない場合、stop より前で終了する範囲が生成されます。

julia> range(1, 3.5, step=2)
1.0:2.0:3.0

中間値が合理的に計算されるように特別な配慮がなされています。この誘発されたオーバーヘッドを避けるために、LinRange コンストラクタを参照してください。

Julia 1.1

位置引数としての stop は少なくとも Julia 1.1 が必要です。

Julia 1.7

キーワード引数なしのバージョンと start をキーワード引数とするバージョンは少なくとも Julia 1.7 が必要です。

Julia 1.8

stop を唯一のキーワード引数とするバージョン、または length を唯一のキーワード引数とするバージョンは少なくとも Julia 1.8 が必要です。

拡張ヘルプ

range は引数が整数である場合、次の条件で Base.OneTo を生成します。

  • length のみが提供されている
  • stop のみが提供されている

range は引数が整数である場合、次の条件で UnitRange を生成します。

  • startstop のみが提供されている
  • lengthstop のみが提供されている

step が提供されている場合、たとえ1として指定されていても UnitRange は生成されません。

source
Base.OneToType
Base.OneTo(n)

1:nのように振る舞うAbstractUnitRangeを定義しますが、追加の特徴として下限が1であることが型システムによって保証されています。

source
Base.StepRangeLenType
StepRangeLen(         ref::R, step::S, len, [offset=1]) where {  R,S}
StepRangeLen{T,R,S}(  ref::R, step::S, len, [offset=1]) where {T,R,S}
StepRangeLen{T,R,S,L}(ref::R, step::S, len, [offset=1]) where {T,R,S,L}

範囲 rr[i] が型 T の値を生成します(最初の形式では、T は自動的に推測されます)。これは、ref 値、step、および len(長さ)によってパラメータ化されています。デフォルトでは ref は開始値 r[1] ですが、代わりに他のインデックス 1 <= offset <= lenr[offset] の値として指定することもできます。構文 a:b または a:b:c は、ab、または c のいずれかが浮動小数点数である場合、StepRangeLen を作成します。

Julia 1.7

4番目の型パラメータ L は少なくとも Julia 1.7 が必要です。

source
Base.lograngeFunction
logrange(start, stop, length)
logrange(start, stop; length)

指定された端点の間に対数的に間隔を空けた要素を持つ特化型配列を構築します。つまり、連続する要素の比率は一定で、長さから計算されます。

これはPythonのgeomspaceに似ています。MathematicaのPowerRangeとは異なり、比率ではなく要素の数を指定します。PythonやMatlabのlogspaceとは異なり、startstopの引数は常に結果の最初と最後の要素であり、いくつかの基数に適用されるべきべき乗ではありません。

julia> logrange(10, 4000, length=3)
3-element Base.LogRange{Float64, Base.TwicePrecision{Float64}}:
 10.0, 200.0, 4000.0

julia> ans[2] ≈ sqrt(10 * 4000)  # 中間要素は幾何平均
true

julia> range(10, 40, length=3)[2] ≈ (10 + 40)/2  # 算術平均
true

julia> logrange(1f0, 32f0, 11)
11-element Base.LogRange{Float32, Float64}:
 1.0, 1.41421, 2.0, 2.82843, 4.0, 5.65685, 8.0, 11.3137, 16.0, 22.6274, 32.0

julia> logrange(1, 1000, length=4) ≈ 10 .^ (0:3)
true

詳細についてはLogRange型を参照してください。

線形間隔の点についてはrangeも参照してください。

Julia 1.11

この関数は少なくともJulia 1.11が必要です。

source
Base.LogRangeType
LogRange{T}(start, stop, len) <: AbstractVector{T}

startstopの間に対数的に間隔を持つ要素を持つ範囲で、間隔はlenによって制御されます。lograngeによって返されます。

LinRangeと同様に、最初と最後の要素は提供されたものと正確に一致しますが、中間の値には小さな浮動小数点誤差がある場合があります。これらは、構築時に保存される端点の対数を使用して計算され、しばしばTよりも高い精度で保存されます。

julia> logrange(1, 4, length=5)
5-element Base.LogRange{Float64, Base.TwicePrecision{Float64}}:
 1.0, 1.41421, 2.0, 2.82843, 4.0

julia> Base.LogRange{Float16}(1, 4, 5)
5-element Base.LogRange{Float16, Float64}:
 1.0, 1.414, 2.0, 2.828, 4.0

julia> logrange(1e-310, 1e-300, 11)[1:2:end]
6-element Vector{Float64}:
 1.0e-310
 9.999999999999974e-309
 9.999999999999981e-307
 9.999999999999988e-305
 9.999999999999994e-303
 1.0e-300

julia> prevfloat(1e-308, 5) == ans[2]
true

整数のeltype Tは許可されていません。たとえば、round.(Int, xs)を使用するか、いくつかの整数基数の明示的な累乗を使用してください:

julia> xs = logrange(1, 512, 4)
4-element Base.LogRange{Float64, Base.TwicePrecision{Float64}}:
 1.0, 8.0, 64.0, 512.0

julia> 2 .^ (0:3:9) |> println
[1, 8, 64, 512]
Julia 1.11

この型は少なくともJulia 1.11を必要とします。

source
Base.:==Function
==(x, y)

汎用等価演算子。===にフォールバックします。等価性の概念を持つすべての型に対して実装されるべきです。これは、インスタンスが表す抽象的な値に基づいています。たとえば、すべての数値型は型を無視して数値で比較されます。文字列はエンコーディングを無視して文字のシーケンスとして比較されます。同じ型のコレクションは一般的にキーセットを比較し、それらが==であれば、各キーの値を比較し、すべてのペアが==であればtrueを返します。他のプロパティは通常考慮されません(正確な型など)。

この演算子は浮動小数点数に対してIEEEのセマンティクスに従います:0.0 == -0.0およびNaN != NaN

結果はBool型ですが、オペランドの1つがmissingである場合はmissingが返されます(三値論理)。コレクションは一般的にallに似た三値論理を実装し、いずれかのオペランドにmissing値が含まれている場合はmissingを返し、他のすべてのペアが等しい場合にのみ返します。常にBool結果を得るにはisequalまたは===を使用してください。

実装

新しい数値型は、新しい型の2つの引数に対してこの関数を実装し、可能な限り昇格ルールを介して他の型との比較を処理する必要があります。

isequal==にフォールバックするため、==の新しいメソッドはDict型によってキーを比較するために使用されます。あなたの型が辞書のキーとして使用される場合、したがってhashも実装する必要があります。

ある型が==isequal、およびislessを定義している場合、比較の一貫性を確保するために<も実装する必要があります。

source
Base.:!=Function
!=(x, y)
≠(x,y)

不等比較演算子。常に == の逆の答えを返します。

実装

新しい型は一般的にこれを実装せず、代わりにフォールバック定義 !=(x,y) = !(x==y) に依存すべきです。

julia> 3 != 2
true

julia> "foo" ≠ "foo"
false
source
!=(x)

引数を x と比較する関数を作成します。これは != を使用し、すなわち y -> y != x に相当する関数です。返される関数は Base.Fix2{typeof(!=)} 型であり、特化したメソッドを実装するために使用できます。

Julia 1.2

この機能は少なくとも Julia 1.2 が必要です。

source
Base.:!==Function
!==(x, y)
≢(x,y)

常に === の逆の答えを返します。

julia> a = [1, 2]; b = [1, 2];

julia> a ≢ b
true

julia> a ≢ a
false
source
Base.:<Function
<(x, y)

小なり比較演算子。isless にフォールバックします。浮動小数点の NaN 値の動作のため、この演算子は部分順序を実装します。

実装

標準的な部分順序を持つ新しい型は、新しい型の二つの引数に対してこの関数を実装する必要があります。標準的な全順序を持つ型は、代わりに isless を実装する必要があります。

関連情報として isunordered も参照してください。

julia> 'a' < 'b'
true

julia> "abc" < "abd"
true

julia> 5 < 3
false
source
<(x)

引数を x と比較する関数を作成します。これは < を使用し、すなわち y -> y < x に相当する関数です。返される関数は Base.Fix2{typeof(<)} 型であり、特化したメソッドを実装するために使用できます。

Julia 1.2

この機能は少なくとも Julia 1.2 が必要です。

source
Base.:<=Function
<=(x, y)
≤(x,y)

小なりイコール比較演算子。(x < y) | (x == y) にフォールバックします。

julia> 'a' <= 'b'
true

julia> 7 ≤ 7 ≤ 9
true

julia> "abc" ≤ "abc"
true

julia> 5 <= 3
false
source
<=(x)

引数を x と比較する関数を作成します。これは <= を使用し、すなわち y -> y <= x に相当する関数です。返される関数は Base.Fix2{typeof(<=)} 型であり、特化したメソッドを実装するために使用できます。

Julia 1.2

この機能は少なくとも Julia 1.2 が必要です。

source
Base.:>Function
>(x, y)

大なり比較演算子。y < x にフォールバックします。

実装

一般的に、新しい型はこの関数の代わりに < を実装し、フォールバック定義 >(x, y) = y < x に依存すべきです。

julia> 'a' > 'b'
false

julia> 7 > 3 > 1
true

julia> "abc" > "abd"
false

julia> 5 > 3
true
source
>(x)

x>を使用して引数を比較する関数を作成します。つまり、y -> y > xに相当する関数です。返される関数はBase.Fix2{typeof(>)}型であり、特化したメソッドを実装するために使用できます。

Julia 1.2

この機能は少なくともJulia 1.2が必要です。

source
Base.:>=Function
>=(x, y)
≥(x,y)

大なりイコール比較演算子。y <= x にフォールバックします。

julia> 'a' >= 'b'
false

julia> 7 ≥ 7 ≥ 3
true

julia> "abc" ≥ "abc"
true

julia> 5 >= 3
true
source
>=(x)

引数を x と比較する関数を作成します。これは >= を使用し、すなわち y -> y >= x に相当する関数です。返される関数は Base.Fix2{typeof(>=)} 型であり、特化したメソッドを実装するために使用できます。

Julia 1.2

この機能は少なくとも Julia 1.2 が必要です。

source
Base.cmpFunction
cmp(x,y)

xyより小さい場合は-1、等しい場合は0、大きい場合は1を返します。islessによって実装された全順序を使用します。

julia> cmp(1, 2)
-1

julia> cmp(2, 1)
1

julia> cmp(2+im, 3-im)
ERROR: MethodError: no method matching isless(::Complex{Int64}, ::Complex{Int64})
[...]
source
cmp(<, x, y)

xyより小さい場合は-1、等しい場合は0、大きい場合は1を返します。最初の引数は使用する小なり比較関数を指定します。

source
cmp(a::AbstractString, b::AbstractString) -> Int

2つの文字列を比較します。両方の文字列が同じ長さで、各インデックスの文字が両方の文字列で同じであれば 0 を返します。ab の接頭辞である場合、または a がアルファベット順で b の前に来る場合は -1 を返します。ba の接頭辞である場合、または b がアルファベット順で a の前に来る場合は 1 を返します(技術的には、Unicode コードポイントによる辞書順です)。

julia> cmp("abc", "abc")
0

julia> cmp("ab", "abc")
-1

julia> cmp("abc", "ab")
1

julia> cmp("ab", "ac")
-1

julia> cmp("ac", "ab")
1

julia> cmp("α", "a")
1

julia> cmp("b", "β")
-1
source
Base.:~Function
~(x)

ビット単位の否定。

参照: !, &, |

julia> ~4
-5

julia> ~10
-11

julia> ~true
false
source
Base.:&Function
x & y

ビット単位のAND。 三値論理を実装しており、片方のオペランドがmissingで、もう片方がtrueの場合はmissingを返します。関数適用形式のために括弧を追加します: (&)(x, y)

関連: |, xor, &&

julia> 4 & 10
0

julia> 4 & 12
4

julia> true & missing
missing

julia> false & missing
false
source
Base.:|Function
x | y

ビット単位の論理和。 三値論理 を実装しており、片方のオペランドが missing で、もう片方が false の場合は missing を返します。

他にも: &, xor, ||.

julia> 4 | 10
14

julia> 4 | 1
5

julia> true | missing
true

julia> false | missing
missing
source
Base.xorFunction
xor(x, y)
⊻(x, y)

xy のビット単位の排他的論理和。引数の一方が missing の場合、missing を返す 三値論理 を実装しています。

中置演算 a ⊻ bxor(a,b) の同義語であり、 は Julia REPL で \xor または \veebar をタブ補完することで入力できます。

julia> xor(true, false)
true

julia> xor(true, true)
false

julia> xor(true, missing)
missing

julia> false ⊻ false
false

julia> [true; true; false] .⊻ [true; false; false]
3-element BitVector:
 0
 1
 0
source
Base.nandFunction
nand(x, y)
⊼(x, y)

xy のビット単位の nand (not and)。引数の一方が missing の場合は missing を返す 三値論理 を実装しています。

中置演算 a ⊼ bnand(a,b) の同義語であり、 は Julia REPL で \nand または \barwedge をタブ補完することで入力できます。

julia> nand(true, false)
true

julia> nand(true, true)
false

julia> nand(true, missing)
missing

julia> false ⊼ false
true

julia> [true; true; false] .⊼ [true; false; false]
3-element BitVector:
 0
 1
 1
source
Base.norFunction
nor(x, y)
⊽(x, y)

xy のビット単位のノル(not or)。三値論理を実装しており、引数の一方が missing で他方が true でない場合は missing を返します。

中置演算子 a ⊽ bnor(a,b) の同義語であり、 は Julia REPL で \nor または \barvee をタブ補完することで入力できます。

julia> nor(true, false)
false

julia> nor(true, true)
false

julia> nor(true, missing)
false

julia> false ⊽ false
true

julia> false ⊽ missing
missing

julia> [true; true; false] .⊽ [true; false; false]
3-element BitVector:
 0
 0
 1
source
Base.:!Function
!(x)

ブール否定。 三値論理を実装し、xmissingの場合はmissingを返します。

ビット単位の否定については、~も参照してください。

julia> !true
false

julia> !false
true

julia> !missing
missing

julia> .![true false true]
1×3 BitMatrix:
 0  1  0
source
!f::Function

述語関数の否定: ! の引数が関数であるとき、それは f のブール否定を計算する合成関数を返します。

参照:

julia> str = "∀ ε > 0, ∃ δ > 0: |x-y| < δ ⇒ |f(x)-f(y)| < ε"
"∀ ε > 0, ∃ δ > 0: |x-y| < δ ⇒ |f(x)-f(y)| < ε"

julia> filter(isletter, str)
"εδxyδfxfyε"

julia> filter(!isletter, str)
"∀  > 0, ∃  > 0: |-| <  ⇒ |()-()| < "
Julia 1.9

Julia 1.9以降、!f は匿名関数の代わりに ComposedFunction を返します。

source
&&Keyword
x && y

ショートサーキットブールAND。

関連情報としては、&、三項演算子 ? :、および制御フローに関するマニュアルのセクションを参照してください。

julia> x = 3;

julia> x > 1 && x < 10 && x isa Int
true

julia> x < 0 && error("expected positive x")
false
source
||Keyword
x || y

ショートサーキットブールOR。

参照: |, xor, &&

julia> pi < 3 || ℯ < 3
true

julia> false || true || println("neither is true!")
true
source

Mathematical Functions

Base.isapproxFunction
isapprox(x, y; atol::Real=0, rtol::Real=atol>0 ? 0 : √eps, nans::Bool=false[, norm::Function])

近似等価比較。2つの数は、相対距離または絶対距離が許容範囲内であれば等しいと見なされます:isapproxnorm(x-y) <= max(atol, rtol*max(norm(x), norm(y)))が成り立つ場合にtrueを返します。デフォルトのatol(絶対許容誤差)はゼロで、デフォルトのrtol(相対許容誤差)はxyの型に依存します。キーワード引数nansは、NaN値が等しいと見なされるかどうかを決定します(デフォルトはfalseです)。

実数または複素数の浮動小数点値の場合、atol > 0が指定されていない場合、rtolxまたはyの型のepsの平方根、どちらか大きい方(最も精度が低い)にデフォルト設定されます。これは、約半分の有効桁の等価性を要求することに相当します。それ以外の場合、例えば整数引数の場合やatol > 0が指定されている場合、rtolはゼロにデフォルト設定されます。

normキーワードは、数値の(x,y)の場合はabsに、配列の場合はLinearAlgebra.normにデフォルト設定されます(代替のnorm選択が時々便利です)。xyが配列の場合、norm(x-y)が有限でない場合(すなわち±InfまたはNaN)、比較はxyのすべての要素が成分ごとに近似等しいかどうかを確認することに戻ります。

二項演算子は、デフォルトの引数を持つisapproxと同等であり、x ≉ y!isapprox(x,y)と同等です。

x ≈ 0(すなわち、デフォルトの許容誤差でゼロと比較すること)は、デフォルトのatol0であるため、x == 0と同等です。このような場合、適切なatolを指定するか(またはnorm(x) ≤ atolを使用するか)、コードを再配置する必要があります(例えば、x - y ≈ 0ではなくx ≈ yを使用する)。非ゼロのatolを自動的に選択することはできません。なぜなら、それは問題の全体的なスケーリング(「単位」)に依存するからです:例えば、x - y ≈ 0において、atol=1e-9x地球の半径をメートル単位で表す場合には非常に小さな許容誤差ですが、x水素原子の半径をメートル単位で表す場合には非常に大きな許容誤差です。

Julia 1.6

数値(非配列)引数を比較する際にnormキーワード引数を渡すには、Julia 1.6以降が必要です。

julia> isapprox(0.1, 0.15; atol=0.05)
true

julia> isapprox(0.1, 0.15; rtol=0.34)
true

julia> isapprox(0.1, 0.15; rtol=0.33)
false

julia> 0.1 + 1e-10 ≈ 0.1
true

julia> 1e-10 ≈ 0
false

julia> isapprox(1e-10, 0, atol=1e-8)
true

julia> isapprox([10.0^9, 1.0], [10.0^9, 2.0]) # using `norm`
true
source
isapprox(x; kwargs...) / ≈(x; kwargs...)

引数を x と比較する関数を作成します。つまり、y -> y ≈ x に相当する関数です。

ここでサポートされているキーワード引数は、2引数の isapprox と同じです。

Julia 1.5

このメソッドは Julia 1.5 以降が必要です。

source
Base.sinMethod
sin(x)

xがラジアンであるときのxの正弦を計算します。

関連項目としては、sindsinpisincoscisasinがあります。

julia> round.(sin.(range(0, 2pi, length=9)'), digits=3)
1×9 Matrix{Float64}:
 0.0  0.707  1.0  0.707  0.0  -0.707  -1.0  -0.707  -0.0

julia> sind(45)
0.7071067811865476

julia> sinpi(1/4)
0.7071067811865475

julia> round.(sincos(pi/6), digits=3)
(0.5, 0.866)

julia> round(cis(pi/6), digits=3)
0.866 + 0.5im

julia> round(exp(im*pi/6), digits=3)
0.866 + 0.5im
source
Base.cosMethod
cos(x)

xがラジアンであるときのxのコサインを計算します。

関連情報としては、cosdcospisincoscisがあります。

source
Base.Math.sincosMethod
sincos(x)

xがラジアンであるとき、xの正弦と余弦を同時に計算し、タプル(正弦, 余弦)を返します。

関連項目としては、cissincospisincosdがあります。

source
Base.tanMethod
tan(x)

xがラジアンであるときのxのタンジェントを計算します。

source
Base.Math.sindFunction
sind(x)

xのサインを計算します。ここで、xは度数で表されます。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.cosdFunction
cosd(x)

xが度数である場合のコサインを計算します。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.tandFunction
tand(x)

xのタンジェントを計算します。xは度数で指定されます。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.sincosdFunction
sincosd(x)

xが度数であるとき、xの正弦と余弦を同時に計算します。

Julia 1.3

この関数は少なくともJulia 1.3が必要です。

source
Base.Math.sinpiFunction
sinpi(x)

\[\sin(\pi x)\]

sin(pi*x)よりも正確に計算します。特に大きなxに対して。

他にsindcospisincospiも参照してください。

source
Base.Math.cospiFunction
cospi(x)

\[\cos(\pi x)\]

を、特に大きな$x$に対して、cos(pi*x)よりも正確に計算します。

source
Base.Math.tanpiFunction
tanpi(x)

\[\tan(\pi x)\]

tan(pi*x)よりも正確に計算します。特に大きなxに対して。

Julia 1.10

この関数は少なくともJulia 1.10が必要です。

他にtandsinpicospisincospiを参照してください。

source
Base.Math.sincospiFunction
sincospi(x)

同時に sinpi(x)cospi(x) を計算します(π*x の正弦と余弦、ここで x はラジアン単位です)。タプル (sine, cosine) を返します。

Julia 1.6

この関数は Julia 1.6 以降が必要です。

関連情報: cispi, sincosd, sinpi.

source
Base.coshMethod
cosh(x)

xの双曲線コサインを計算します。

source
Base.tanhMethod
tanh(x)

xの双曲線正接を計算します。

関連項目としては tanatanh があります。

julia> tanh.(-3:3f0)  # ここで 3f0 は Float32 です
7-element Vector{Float32}:
 -0.9950548
 -0.9640276
 -0.7615942
  0.0
  0.7615942
  0.9640276
  0.9950548

julia> tan.(im .* (1:3))
3-element Vector{ComplexF64}:
 0.0 + 0.7615941559557649im
 0.0 + 0.9640275800758169im
 0.0 + 0.9950547536867306im
source
Base.asinMethod
asin(x)

xの逆正弦を計算します。出力はラジアンで表示されます。

出力が度数の場合は、asindを参照してください。

julia> asin.((0, 1/2, 1))
(0.0, 0.5235987755982989, 1.5707963267948966)

julia> asind.((0, 1/2, 1))
(0.0, 30.000000000000004, 90.0)
source
Base.acosMethod
acos(x)

xの逆余弦を計算します。出力はラジアンで表示されます。

source
Base.atanMethod
atan(y)
atan(y, x)

y または y/x の逆タンジェントを計算します。

1つの実引数の場合、これは正の x-軸と点 (1, y) の間のラジアンでの角度であり、$[-\pi/2, \pi/2]$ の範囲の値を返します。

2つの引数の場合、これは正の x-軸と点 (x, y) の間のラジアンでの角度であり、$[-\pi, \pi]$ の範囲の値を返します。これは標準の atan2 関数に対応します。慣例として atan(0.0,x)$\pi$ と定義され、atan(-0.0,x)x < 0 の場合に $-\pi$ と定義されます。

度数法については atand を参照してください。

julia> rad2deg(atan(-1/√3))
-30.000000000000004

julia> rad2deg(atan(-1, √3))
-30.000000000000004

julia> rad2deg(atan(1, -√3))
150.0
source
Base.Math.asindFunction
asind(x)

xの逆正弦を計算します。出力は度単位です。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.acosdFunction
acosd(x)

xの逆余弦を計算します。出力は度数で表されます。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.atandFunction
atand(y)
atand(y,x)

y または y/x の逆タンジェントを計算します。出力は度数法です。

Julia 1.7

1引数メソッドは、Julia 1.7以降、正方行列引数をサポートしています。

source
Base.Math.secMethod
sec(x)

xがラジアンであるとき、xのセカントを計算します。

source
Base.Math.cscMethod
csc(x)

xがラジアンであるときのxの余弦の値を計算します。

source
Base.Math.cotMethod
cot(x)

xがラジアンであるときのxのコタンジェントを計算します。

source
Base.Math.secdFunction
secd(x)

xが度数であるときのxのセカントを計算します。

source
Base.Math.cscdFunction
cscd(x)

xが度数であるときのxの余弦の逆数を計算します。

source
Base.Math.cotdFunction
cotd(x)

xが度数であるとき、xのコタンジェントを計算します。

source
Base.Math.asecMethod
asec(x)

xの逆セカントを計算します。出力はラジアン単位です。

source
Base.Math.acscMethod
acsc(x)

xの逆コセカントを計算します。出力はラジアンで表示されます。

source
Base.Math.acotMethod
acot(x)

xの逆コタンジェントを計算します。出力はラジアンで表されます。

source
Base.Math.asecdFunction
asecd(x)

xの逆セカントを計算します。出力は度数で表示されます。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.acscdFunction
acscd(x)

xの逆余弦を計算します。出力は度数法です。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.Math.acotdFunction
acotd(x)

xの逆コタンジェントを計算します。出力は度数法です。xが行列の場合、xは正方行列である必要があります。

Julia 1.7

行列引数はJulia 1.7以降が必要です。

source
Base.acoshMethod
acosh(x)

xの逆双曲線コサインを計算します。

source
Base.atanhMethod
atanh(x)

xの逆双曲線タンジェントを計算します。

source
Base.Math.sincFunction
sinc(x)

正規化されたsinc関数を計算します。$\operatorname{sinc}(x) = \sin(\pi x) / (\pi x)$$x \neq 0$の場合)および$x = 0$の場合は$1$です。

他にcoscやその導関数も参照してください。

source
Base.Math.coscFunction
cosc(x)

\[\cos(\pi x) / x - \sin(\pi x) / (\pi x^2)\]

を計算します。ただし、$x \neq 0$ の場合はこの値を、$x = 0$ の場合は $0$ を返します。これは sinc(x) の導関数です。

詳細は sinc を参照してください。

source
Base.Math.deg2radFunction
deg2rad(x)

xを度からラジアンに変換します。

関連情報としては、rad2degsindpiがあります。

julia> deg2rad(90)
1.5707963267948966
source
Base.Math.rad2degFunction
rad2deg(x)

xをラジアンから度に変換します。

関連情報はdeg2radを参照してください。

julia> rad2deg(pi)
180.0
source
Base.Math.hypotFunction
hypot(x, y)

隣接辺の長さを計算します $\sqrt{|x|^2+|y|^2}$ オーバーフローとアンダーフローを避けるために。

このコードは、Carlos F. Borgesによる「hypot(a,b)の改善されたアルゴリズム」に記載されているアルゴリズムの実装です。この記事は、次のリンクでarXivでオンラインで入手できます: https://arxiv.org/abs/1904.09481

hypot(x...)

隣接辺の長さを計算します $\sqrt{\sum |x_i|^2}$ オーバーフローとアンダーフローを避けるために。

LinearAlgebra 標準ライブラリの norm も参照してください。

julia> a = Int64(10)^10;

julia> hypot(a, a)
1.4142135623730951e10

julia> √(a^2 + a^2) # a^2 はオーバーフローします
ERROR: DomainError with -2.914184810805068e18:
sqrtは負の実引数で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。sqrt(Complex(x))を試してください。
Stacktrace:
[...]

julia> hypot(3, 4im)
5.0

julia> hypot(-5.7)
5.7

julia> hypot(3, 4im, 12.0)
13.0

julia> using LinearAlgebra

julia> norm([a, a, a, a]) == hypot(a, a, a, a)
true
source
Base.logMethod
log(x)

xの自然対数を計算します。

負のReal引数に対してはDomainErrorをスローします。複素数引数を使用して複素数結果を得てください。負の実軸に沿って分岐切断があり、-0.0imは軸の下にあると見なされます。

他にlog1plog2log10も参照してください。

julia> log(2)
0.6931471805599453

julia> log(-3)
ERROR: DomainError with -3.0:
logは負の実引数で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。log(Complex(x))を試してください。
Stacktrace:
 [1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]

julia> log(-3 + 0im)
1.0986122886681098 + 3.141592653589793im

julia> log(-3 - 0.0im)
1.0986122886681098 - 3.141592653589793im

julia> log.(exp.(-1:1))
3-element Vector{Float64}:
 -1.0
  0.0
  1.0
source
Base.logMethod
log(b,x)

xの底bの対数を計算します。負のReal引数に対してはDomainErrorをスローします。

julia> log(4,8)
1.5

julia> log(4,2)
0.5

julia> log(-2, 3)
ERROR: DomainError with -2.0:
logは負の実引数で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。log(Complex(x))を試してください。
Stacktrace:
 [1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]

julia> log(2, -3)
ERROR: DomainError with -3.0:
logは負の実引数で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。log(Complex(x))を試してください。
Stacktrace:
 [1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]
Note

bが2または10の累乗である場合、log2またはlog10を使用するべきです。これらは通常、より速く、より正確です。例えば、

julia> log(100,1000000)
2.9999999999999996

julia> log10(1000000)/2
3.0
source
Base.log2Function
log2(x)

xの底2の対数を計算します。負のReal引数に対してはDomainErrorをスローします。

関連: exp2, ldexp, ispow2.

julia> log2(4)
2.0

julia> log2(10)
3.321928094887362

julia> log2(-2)
ERROR: DomainError with -2.0:
log2は負の実引数で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。log2(Complex(x))を試してください。
Stacktrace:
 [1] throw_complex_domainerror(f::Symbol, x::Float64) at ./math.jl:31
[...]

julia> log2.(2.0 .^ (-1:1))
3-element Vector{Float64}:
 -1.0
  0.0
  1.0
source
Base.log10Function
log10(x)

xの10を底とする対数を計算します。負のReal引数に対してはDomainErrorをスローします。

julia> log10(100)
2.0

julia> log10(2)
0.3010299956639812

julia> log10(-2)
ERROR: DomainError with -2.0:
log10は負の実引数で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。log10(Complex(x))を試してください。
Stacktrace:
 [1] throw_complex_domainerror(f::Symbol, x::Float64) at ./math.jl:31
[...]
source
Base.log1pFunction
log1p(x)

1+xの正確な自然対数。-1未満のReal引数に対してはDomainErrorをスローします。

julia> log1p(-0.5)
-0.6931471805599453

julia> log1p(0)
0.0

julia> log1p(-2)
ERROR: DomainError with -2.0:
log1pは実引数が<-1で呼び出されましたが、複素引数で呼び出された場合にのみ複素結果を返します。log1p(Complex(x))を試してください。
Stacktrace:
 [1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]
source
Base.Math.frexpFunction
frexp(val)

x$[1/2, 1)$または0の範囲の大きさを持ち、val$x \times 2^{exp}$に等しいように、(x,exp)を返します。

関連情報としては、significandexponentldexpがあります。

julia> frexp(6.0)
(0.75, 3)

julia> significand(6.0), exponent(6.0)  # [1, 2)の範囲に代わり
(1.5, 2)

julia> frexp(0.0), frexp(NaN), frexp(-Inf)  # exponentはエラーを返す
((0.0, 0), (NaN, 0), (-Inf, 0))
source
Base.expMethod
exp(x)

xの自然基底指数を計算します。言い換えれば、$ℯ^x$です。

他にexp2exp10、およびcisも参照してください。

julia> exp(1.0)
2.718281828459045

julia> exp(im * pi) ≈ cis(pi)
true
source
Base.exp2Function
exp2(x)

xの底2指数を計算します。言い換えれば、$2^x$です。

関連情報としては、ldexp<<があります。

julia> exp2(5)
32.0

julia> 2^5
32

julia> exp2(63) > typemax(Int)
true
source
Base.exp10Function
exp10(x)

xの10を底とする指数を計算します。言い換えれば、$10^x$です。

julia> exp10(2)
100.0

julia> 10^2
100
source
Base.Math.ldexpFunction
ldexp(x, n)

\[x \times 2^n\]

を計算します。

関連情報として frexp, exponent を参照してください。

julia> ldexp(5.0, 2)
20.0
source
Base.Math.modfFunction
modf(x)

数の小数部分と整数部分のタプル (fpart, ipart) を返します。両方の部分は引数と同じ符号を持ちます。

julia> modf(3.5)
(0.5, 3.0)

julia> modf(-3.5)
(-0.5, -3.0)
source
Base.expm1Function
expm1(x)

正確に $e^x-1$ を計算します。これは、xの小さい値に対するexp(x)-1の直接評価に伴う精度の損失を回避します。

julia> expm1(1e-16)
1.0e-16

julia> exp(1e-16) - 1
0.0
source
Base.roundFunction
round([T,] x, [r::RoundingMode])
round(x, [r::RoundingMode]; digits::Integer=0, base = 10)
round(x, [r::RoundingMode]; sigdigits::Integer, base = 10)

数値 x を四捨五入します。

キーワード引数なしの場合、x は整数値に四捨五入され、T の型の値が返されます。T が提供されていない場合は x と同じ型の値が返されます。値が T で表現できない場合は、InexactError がスローされます。これは convert に似ています。

digits キーワード引数が提供されている場合、小数点以下(または負の場合は小数点前)の指定された桁数に四捨五入されます。基数は base です。

sigdigits キーワード引数が提供されている場合、指定された有効桁数に四捨五入されます。基数は base です。

RoundingMode r は四捨五入の方向を制御します。デフォルトは RoundNearest で、最も近い整数に四捨五入され、0.5 の分数値は最も近い偶数の整数に四捨五入されます。グローバルな四捨五入モードが変更されると、round が不正確な結果を返す可能性があることに注意してください(rounding を参照)。

浮動小数点型に四捨五入する場合、その型で表現可能な整数(および Inf)に四捨五入され、真の整数には四捨五入されません。Inf は「最も近い」を決定する目的で floatmax(T) よりも 1 ulp 大きいものとして扱われます。これは convert に似ています。

julia> round(1.7)
2.0

julia> round(Int, 1.7)
2

julia> round(1.5)
2.0

julia> round(2.5)
2.0

julia> round(pi; digits=2)
3.14

julia> round(pi; digits=3, base=2)
3.125

julia> round(123.456; sigdigits=2)
120.0

julia> round(357.913; sigdigits=4, base=2)
352.0

julia> round(Float16, typemax(UInt128))
Inf16

julia> floor(Float16, typemax(UInt128))
Float16(6.55e4)
Note

2 以外の基数で指定された桁数に四捨五入する場合、バイナリ浮動小数点数で操作すると不正確になることがあります。たとえば、1.15 で表される Float64 の値は実際には 1.15 よりも 小さい ですが、1.2 に四捨五入されます。たとえば:

julia> x = 1.15
1.15

julia> big(1.15)
1.149999999999999911182158029987476766109466552734375

julia> x < 115//100
true

julia> round(x, digits=1)
1.2

拡張

round を新しい数値型に拡張するには、通常、Base.round(x::NewType, r::RoundingMode) を定義するだけで十分です。

source
Base.Rounding.RoundingModeType
RoundingMode

浮動小数点演算の丸めモードを制御するために使用される型(rounding/setrounding 関数を介して)、または最も近い整数に丸めるためのオプション引数として(round 関数を介して)。

現在サポートされている丸めモードは次のとおりです:

Julia 1.9

RoundFromZero は少なくとも Julia 1.9 が必要です。以前のバージョンは BigFloat のみで RoundFromZero をサポートしています。

source
Base.Rounding.RoundNearestConstant
RoundNearest

デフォルトの丸めモードです。最も近い整数に丸められ、引き分け(0.5の分数値)は最も近い偶数に丸められます。

source
Base.Rounding.RoundNearestTiesUpConstant
RoundNearestTiesUp

最も近い整数に丸めます。結びつきがある場合は、正の無限大に向かって丸めます(Java/JavaScript round の動作)。

source
Base.Rounding.RoundFromZeroConstant
RoundFromZero

ゼロから離れるように丸めます。

Julia 1.9

RoundFromZero は少なくとも Julia 1.9 が必要です。以前のバージョンは BigFloat のみで RoundFromZero をサポートしています。

julia> BigFloat("1.0000000000000001", 5, RoundFromZero)
1.06
source
Base.roundMethod
round(z::Complex[, RoundingModeReal, [RoundingModeImaginary]])
round(z::Complex[, RoundingModeReal, [RoundingModeImaginary]]; digits=0, base=10)
round(z::Complex[, RoundingModeReal, [RoundingModeImaginary]]; sigdigits, base=10)

複素数 z に対して同じ型の最も近い整数値を返します。指定された RoundingMode を使用して、結びつきを解消します。最初の RoundingMode は実数成分の丸めに使用され、2番目は虚数成分の丸めに使用されます。

RoundingModeRealRoundingModeImaginary はデフォルトで RoundNearest に設定されており、これは最も近い整数に丸めます。結びつき(0.5の分数値)は最も近い偶数に丸められます。

julia> round(3.14 + 4.5im)
3.0 + 4.0im

julia> round(3.14 + 4.5im, RoundUp, RoundNearestTiesUp)
4.0 + 5.0im

julia> round(3.14159 + 4.512im; digits = 1)
3.1 + 4.5im

julia> round(3.14159 + 4.512im; sigdigits = 3)
3.14 + 4.51im
source
Base.ceilFunction
ceil([T,] x)
ceil(x; digits::Integer= [, base = 10])
ceil(x; sigdigits::Integer= [, base = 10])

ceil(x) は、x 以上の同じ型の最も近い整数値を返します。

ceil(T, x) は結果を型 T に変換し、切り上げた値が T として表現できない場合は InexactError をスローします。

キーワード digitssigdigits および baseround と同様に機能します。

新しい型に対して ceil をサポートするには、Base.round(x::NewType, ::RoundingMode{:Up}) を定義します。

source
Base.floorFunction
floor([T,] x)
floor(x; digits::Integer= [, base = 10])
floor(x; sigdigits::Integer= [, base = 10])

floor(x) は、x 以下の同じ型の最も近い整数値を返します。

floor(T, x) は結果を型 T に変換し、フロア値が T で表現できない場合は InexactError をスローします。

キーワード digitssigdigits および baseround と同様に機能します。

新しい型の floor をサポートするには、Base.round(x::NewType, ::RoundingMode{:Down}) を定義します。

source
Base.truncFunction
trunc([T,] x)
trunc(x; digits::Integer= [, base = 10])
trunc(x; sigdigits::Integer= [, base = 10])

trunc(x) は、x の絶対値以下の同じ型の最も近い整数値を返します。

trunc(T, x) は結果を型 T に変換し、切り捨てた値が T で表現できない場合は InexactError をスローします。

キーワード digitssigdigits および baseround と同様に機能します。

新しい型に対して trunc をサポートするには、Base.round(x::NewType, ::RoundingMode{:ToZero}) を定義します。

参照: %floorunsignedunsafe_trunc

julia> trunc(2.22)
2.0

julia> trunc(-2.22, digits=1)
-2.2

julia> trunc(Int, -2.22)
-2
source
Base.unsafe_truncFunction
unsafe_trunc(T, x)

T の絶対値が x の絶対値以下の最も近い整数値を返します。もしその値が T で表現できない場合は、任意の値が返されます。詳細は trunc を参照してください。

julia> unsafe_trunc(Int, -2.2)
-2

julia> unsafe_trunc(Int, NaN)
-9223372036854775808
source
Base.minFunction
min(x, y, ...)

引数の最小値をislessに従って返します。引数のいずれかがmissingである場合、missingを返します。コレクションから最小要素を取得するには、minimum関数も参照してください。

julia> min(2, 5, 1)
1

julia> min(4, missing, 6)
missing
source
Base.maxFunction
max(x, y, ...)

引数の最大値を isless に基づいて返します。引数のいずれかが missing の場合、missing を返します。コレクションから最大要素を取得するには、maximum 関数も参照してください。

julia> max(2, 5, 1)
5

julia> max(5, missing, 6)
missing
source
Base.minmaxFunction
minmax(x, y)

返す (min(x,y), max(x,y))

また、extrema[@ref]も参照してください。これは (minimum(x), maximum(x)) を返します。

julia> minmax('c','b')
('b', 'c')
source
Base.clampFunction
clamp(x, lo, hi)

lo <= x <= hi の場合は x を返します。x > hi の場合は hi を返します。x < lo の場合は lo を返します。引数は共通の型に昇格されます。

他に clamp!minmax も参照してください。

Julia 1.3

最初の引数に missing を指定するには、少なくとも Julia 1.3 が必要です。

julia> clamp.([pi, 1.0, big(10)], 2.0, 9.0)
3-element Vector{BigFloat}:
 3.141592653589793238462643383279502884197169399375105820974944592307816406286198
 2.0
 9.0

julia> clamp.([11, 8, 5], 10, 6)  # lo > hi の例
3-element Vector{Int64}:
  6
  6
 10
source
clamp(x, T)::T

xtypemin(T)typemax(T)の間に制限し、結果を型Tに変換します。

関連情報はtruncを参照してください。

julia> clamp(200, Int8)
127

julia> clamp(-200, Int8)
-128

julia> trunc(Int, 4pi^2)
39
source
clamp(x::Integer, r::AbstractUnitRange)

xを範囲r内に収める。

Julia 1.6

このメソッドは少なくともJulia 1.6が必要です。

source
Base.clamp!Function
clamp!(array::AbstractArray, lo, hi)

array内の値を指定された範囲に制限します(インプレース)。詳細はclampを参照してください。

Julia 1.3

array内のmissingエントリには、少なくともJulia 1.3が必要です。

julia> row = collect(-4:4)';

julia> clamp!(row, 0, Inf)
1×9 adjoint(::Vector{Int64}) with eltype Int64:
 0  0  0  0  0  1  2  3  4

julia> clamp.((-4:4)', 0, Inf)
1×9 Matrix{Float64}:
 0.0  0.0  0.0  0.0  0.0  1.0  2.0  3.0  4.0
source
Base.absFunction
abs(x)

xの絶対値。

absが符号付き整数に適用されると、オーバーフローが発生し、負の値が返されることがあります。このオーバーフローは、absが符号付き整数の最小表現可能値に適用されるときのみ発生します。つまり、x == typemin(typeof(x))のとき、abs(x) == x < 0となり、期待される-xではありません。

参照: abs2, unsigned, sign

julia> abs(-3)
3

julia> abs(1 + im)
1.4142135623730951

julia> abs.(Int8[-128 -127 -126 0 126 127])  # typemin(Int8)でオーバーフロー
1×6 Matrix{Int8}:
 -128  127  126  0  126  127

julia> maximum(abs, [1, -2, 3, -4])
4
source
Base.CheckedModule
チェック済み

Checkedモジュールは、オーバーフローが発生したときにエラーをスローする組み込みの符号付きおよび符号なし整数型のための算術関数を提供します。これらはchecked_subchecked_divなどのように名付けられています。さらに、add_with_overflowsub_with_overflowmul_with_overflowは、未チェックの結果とオーバーフローの存在を示すブール値の両方を返します。

source
Base.Checked.checked_absFunction
Base.checked_abs(x)

abs(x)を計算し、適用可能な場合はオーバーフローエラーをチェックします。たとえば、標準の二の補数符号付き整数(例:Int)はabs(typemin(Int))を表現できないため、オーバーフローが発生します。

オーバーフロー保護は、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_negFunction
Base.checked_neg(x)

-xを計算し、適用可能な場合はオーバーフローエラーをチェックします。たとえば、標準の二の補数符号付き整数(例:Int)は-typemin(Int)を表現できないため、オーバーフローが発生します。

オーバーフロー保護は、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_addFunction
Base.checked_add(x, y)

x+yを計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_subFunction
Base.checked_sub(x, y)

x-yを計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_mulFunction
Base.checked_mul(x, y)

x*yを計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_divFunction
Base.checked_div(x, y)

div(x,y)を計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_remFunction
Base.checked_rem(x, y)

x%yを計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_fldFunction
Base.checked_fld(x, y)

fld(x,y)を計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_modFunction
Base.checked_mod(x, y)

mod(x,y)を計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_cldFunction
Base.checked_cld(x, y)

cld(x,y)を計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.checked_powFunction
Base.checked_pow(x, y)

^(x,y)を計算し、適用可能な場合はオーバーフローエラーをチェックします。

オーバーフロープロテクションは、目に見えるパフォーマンスペナルティを課す可能性があります。

source
Base.Checked.add_with_overflowFunction
Base.add_with_overflow(x, y) -> (r, f)

r = x+y を計算し、フラグ f はオーバーフローが発生したかどうかを示します。

source
Base.Checked.sub_with_overflowFunction
Base.sub_with_overflow(x, y) -> (r, f)

r = x-y を計算し、フラグ f はオーバーフローが発生したかどうかを示します。

source
Base.Checked.mul_with_overflowFunction
Base.mul_with_overflow(x, y) -> (r, f)

r = x*y を計算し、フラグ f はオーバーフローが発生したかどうかを示します。

source
Base.abs2Function
abs2(x)

xの二乗絶対値。

これは、特にabs(x)hypotを介して平方根を必要とする複素数の場合、abs(x)^2よりも速くなることがあります。

他にabsconjrealも参照してください。

julia> abs2(-3)
9

julia> abs2(3.0 + 4.0im)
25.0

julia> sum(abs2, [1+2im, 3+4im])  # LinearAlgebra.norm(x)^2
30
source
Base.copysignFunction
copysign(x, y) -> z

zxの大きさを持ち、yと同じ符号を持ちます。

julia> copysign(1, -2)
-1

julia> copysign(-1, 2)
1
source
Base.signFunction
sign(x)

x==0 の場合はゼロを返し、それ以外の場合は $x/|x|$ を返します(すなわち、実数 x に対して ±1)。

関連項目としては signbit, zero, copysign, flipsign があります。

julia> sign(-4.0)
-1.0

julia> sign(99)
1

julia> sign(-0.0)
-0.0

julia> sign(0 + im)
0.0 + 1.0im
source
Base.signbitFunction
signbit(x)

xの符号の値が負であればtrueを返し、そうでなければfalseを返します。

関連情報としてsignおよびcopysignを参照してください。

julia> signbit(-4)
true

julia> signbit(5)
false

julia> signbit(5.5)
false

julia> signbit(-4.1)
true
source
Base.flipsignFunction
flipsign(x, y)

yが負の場合、xの符号を反転させて返します。例えば abs(x) = flipsign(x,x)

julia> flipsign(5, 3)
5

julia> flipsign(5, -3)
-5
source
Base.sqrtMethod
sqrt(x)

返す $\sqrt{x}$

負の Real 引数に対して DomainError をスローします。代わりに複素数の負の引数を使用してください。sqrt は負の実数軸に沿った分岐切断を持つことに注意してください。

接頭辞演算子 sqrt と同等です。

参照: hypot

julia> sqrt(big(81))
9.0

julia> sqrt(big(-81))
ERROR: DomainError with -81.0:
NaN result for non-NaN input.
Stacktrace:
 [1] sqrt(::BigFloat) at ./mpfr.jl:501
[...]

julia> sqrt(big(complex(-81)))
0.0 + 9.0im

julia> sqrt(-81 - 0.0im)  # -0.0im は分岐切断の下にあります
0.0 - 9.0im

julia> .√(1:4)
4-element Vector{Float64}:
 1.0
 1.4142135623730951
 1.7320508075688772
 2.0
source
Base.isqrtFunction
isqrt(n::Integer)

整数の平方根: m*m <= n を満たす最大の整数 m

julia> isqrt(5)
2
source
Base.Math.cbrtMethod
cbrt(x::Real)

xの立方根を返します。すなわち、$x^{1/3}$です。負の値も受け付けます($x < 0$のときは負の実数の根を返します)。

接頭辞演算子cbrtと同等です。

julia> cbrt(big(27))
3.0

julia> cbrt(big(-27))
-3.0
source
Base.realFunction
real(z)

複素数 z の実部を返します。

関連項目: imag, reim, complex, isreal, Real

julia> real(1 + 3im)
1
source
real(T::Type)

T の値の実部を表す型を返します。例えば、T == Complex{R} の場合、R を返します。typeof(real(zero(T))) と同等です。

julia> real(Complex{Int})
Int64

julia> real(Float64)
Float64
source
real(A::AbstractArray)

配列 A の各エントリの実部を含む配列を返します。

real.(A) と同等ですが、eltype(A) <: Real の場合は A がコピーされずに返され、A がゼロ次元の場合はスカラーではなく0次元の配列が返されます。

julia> real([1, 2im, 3 + 4im])
3-element Vector{Int64}:
 1
 0
 3

julia> real(fill(2 - im))
0-dimensional Array{Int64, 0}:
2
source
Base.imagFunction
imag(z)

複素数 z の虚部を返します。

関連: conj, reim, adjoint, angle

julia> imag(1 + 3im)
3
source
imag(A::AbstractArray)

配列 A の各エントリの虚部を含む配列を返します。

imag.(A) と同等ですが、A がゼロ次元の場合はスカラーではなく、0次元の配列が返されます。

julia> imag([1, 2im, 3 + 4im])
3-element Vector{Int64}:
 0
 2
 4

julia> imag(fill(2 - im))
0-dimensional Array{Int64, 0}:
-1
source
Base.reimFunction
reim(z)

複素数 z の実部と虚部のタプルを返します。

julia> reim(1 + 3im)
(1, 3)
source
reim(A::AbstractArray)

Aの各エントリの実部と虚部をそれぞれ含む2つの配列のタプルを返します。

(real.(A), imag.(A))と同等ですが、eltype(A) <: Realの場合は、実部を表すためにAがコピーされずに返され、Aがゼロ次元の場合はスカラーではなく0次元の配列が返されます。

julia> reim([1, 2im, 3 + 4im])
([1, 0, 3], [0, 2, 4])

julia> reim(fill(2 - im))
(fill(2), fill(-1))
source
Base.conjFunction
conj(z)

複素数 z の複素共役を計算します。

関連項目: angle, adjoint.

julia> conj(1 + 3im)
1 - 3im
source
conj(A::AbstractArray)

配列 A の各エントリの複素共役を含む配列を返します。

conj.(A) と同等ですが、eltype(A) <: Real の場合は A がコピーされずに返され、A がゼロ次元の場合はスカラーではなく0次元の配列が返されます。

julia> conj([1, 2im, 3 + 4im])
3-element Vector{Complex{Int64}}:
 1 + 0im
 0 - 2im
 3 - 4im

julia> conj(fill(2 - im))
0-dimensional Array{Complex{Int64}, 0}:
2 + 1im
source
Base.angleFunction
angle(z)

複素数 z の位相角をラジアンで計算します。

-pi ≤ angle(z) ≤ pi の数を返し、負の実軸に沿って不連続です。

関連項目: atan, cis, rad2deg.

julia> rad2deg(angle(1 + im))
45.0

julia> rad2deg(angle(1 - im))
-45.0

julia> rad2deg(angle(-1 + 1e-20im))
180.0

julia> rad2deg(angle(-1 - 1e-20im))
-180.0
source
Base.cisFunction
cis(x)

オイラーの公式を使用した exp(im*x) のより効率的な方法: $\cos(x) + i \sin(x) = \exp(i x)$

関連項目としては cispi, sincos, exp, angle があります。

julia> cis(π) ≈ -1
true
source
Base.cispiFunction
cispi(x)

cis(pi*x) のより正確な方法(特に大きな x に対して)。

他に cissincospiexpangle も参照してください。

julia> cispi(10000)
1.0 + 0.0im

julia> cispi(0.25 + 1im)
0.030556854645954562 + 0.03055685464595456im
Julia 1.6

この関数は Julia 1.6 以降が必要です。

source
Base.binomialFunction
binomial(n::Integer, k::Integer)

二項係数 $\binom{n}{k}$ は、$(1+x)^n$ の多項式展開における $k$ 番目の項の係数です。

\[n\]

が非負の場合、これは $n$ 個のアイテムから k 個を選ぶ方法の数です:

\[\binom{n}{k} = \frac{n!}{k! (n-k)!}\]

ここで $n!$factorial 関数です。

\[n\]

が負の場合、これは次の恒等式に基づいて定義されます:

\[\binom{n}{k} = (-1)^k \binom{k-n-1}{k}\]

詳細は factorial を参照してください。

julia> binomial(5, 3)
10

julia> factorial(5) ÷ (factorial(5-3) * factorial(3))
10

julia> binomial(-5, 3)
-35

外部リンク

source
binomial(x::Number, k::Integer)

一般化二項係数は、k ≥ 0 の場合に次の多項式で定義されます。

\[\frac{1}{k!} \prod_{j=0}^{k-1} (x - j)\]

k < 0 の場合はゼロを返します。

整数 x の場合、これは通常の整数二項係数に相当します。

\[\binom{n}{k} = \frac{n!}{k! (n-k)!}\]

非整数 k へのさらなる一般化は数学的に可能ですが、ガンマ関数やベータ関数を含むため、Juliaの標準ライブラリには含まれておらず、SpecialFunctions.jl のような外部パッケージで利用可能です。

外部リンク

source
Base.factorialFunction
factorial(n::Integer)

nの階乗。nIntegerの場合、階乗は整数として計算されます(少なくとも64ビットに昇格されます)。nが小さくない場合、オーバーフローする可能性があることに注意してください。ただし、factorial(big(n))を使用して、任意の精度で結果を正確に計算できます。

binomialも参照してください。

julia> factorial(6)
720

julia> factorial(21)
ERROR: OverflowError: 21 is too large to look up in the table; consider using `factorial(big(21))` instead
Stacktrace:
[...]

julia> factorial(big(21))
51090942171709440000

外部リンク

source
Base.gcdFunction
gcd(x, y...)

最大公約数(正の)またはすべての引数がゼロの場合はゼロ。引数は整数および有理数である可能性があります。

Julia 1.4

有理数の引数はJulia 1.4以降が必要です。

julia> gcd(6, 9)
3

julia> gcd(6, -9)
3

julia> gcd(6, 0)
6

julia> gcd(0, 0)
0

julia> gcd(1//3, 2//3)
1//3

julia> gcd(1//3, -2//3)
1//3

julia> gcd(1//3, 2)
1//3

julia> gcd(0, 0, 10, 15)
5
source
Base.lcmFunction
lcm(x, y...)

最小公倍数(正の)または引数のいずれかがゼロの場合はゼロ。引数は整数および有理数である可能性があります。

Julia 1.4

有理数の引数はJulia 1.4以降が必要です。

julia> lcm(2, 3)
6

julia> lcm(-2, 3)
6

julia> lcm(0, 3)
0

julia> lcm(0, 0)
0

julia> lcm(1//3, 2//3)
2//3

julia> lcm(1//3, -2//3)
2//3

julia> lcm(1//3, 2)
2//1

julia> lcm(1, 3, 5, 7)
105
source
Base.gcdxFunction
gcdx(a, b)

ab の最大公約数(正の)およびそのベズー係数、すなわち $ua+vb = d = gcd(a, b)$ を満たす整数係数 uv を計算します。gcdx(a, b)$(d, u, v)$ を返します。

引数は整数および有理数である可能性があります。

Julia 1.4

有理数の引数は Julia 1.4 以降が必要です。

julia> gcdx(12, 42)
(6, -3, 1)

julia> gcdx(240, 46)
(2, -9, 47)
Note

ベズー係数は 一意に 定義されるわけではありません。gcdx は拡張ユークリッドアルゴリズムによって計算された最小のベズー係数を返します。(参考: D. Knuth, TAoCP, 2/e, p. 325, Algorithm X。)符号付き整数の場合、これらの係数 uv$|u| < |b/d|$ および $|v| < |a/d|$ という意味で最小です。さらに、uv の符号は d が正になるように選ばれます。符号なし整数の場合、係数 uv はその typemax に近い可能性があり、その場合、恒等式は符号なし整数の剰余算によってのみ成り立ちます。

source
Base.ispow2Function
ispow2(n::Number) -> Bool

nが整数の2の累乗であるかどうかをテストします。

関連情報としては count_ones, prevpow, nextpow があります。

julia> ispow2(4)
true

julia> ispow2(5)
false

julia> ispow2(4.5)
false

julia> ispow2(0.25)
true

julia> ispow2(1//8)
true
Julia 1.6

Integer引数のサポートはJulia 1.6で追加されました。

source
Base.nextpowFunction
nextpow(a, x)

x以上の最小のa^nで、nは非負整数です。aは1より大きく、xは0より大きくなければなりません。

関連情報としてprevpowも参照してください。

julia> nextpow(2, 7)
8

julia> nextpow(2, 9)
16

julia> nextpow(5, 20)
25

julia> nextpow(4, 16)
16
source
Base.prevpowFunction
prevpow(a, x)

x以下の最大のa^n、ここでnは非負整数です。aは1より大きく、xは1未満であってはなりません。

nextpowisqrtも参照してください。

julia> prevpow(2, 7)
4

julia> prevpow(2, 9)
8

julia> prevpow(5, 20)
5

julia> prevpow(4, 16)
16
source
Base.nextprodFunction
nextprod(factors::Union{Tuple,AbstractVector}, n)

n以上の次の整数で、factorsの要素である整数 $k_i$ に対して $\prod k_i^{p_i}$ の形で表すことができるもの。

julia> nextprod((2, 3), 105)
108

julia> 2^2 * 3^3
108
Julia 1.6

タプルを受け入れるメソッドは、Julia 1.6以降が必要です。

source
Base.invmodFunction
invmod(n::Integer, m::Integer)

mを法としたnの逆数を取ります:$n y = 1 \pmod m$となる$y$で、$div(y,m) = 0$です。$m = 0$の場合、または$gcd(n,m) \neq 1$の場合はエラーが発生します。

julia> invmod(2, 5)
3

julia> invmod(2, 3)
2

julia> invmod(5, 6)
5
source
invmod(n::Integer, T) where {T <: Base.BitInteger}
invmod(n::T) where {T <: Base.BitInteger}

整数環の型 T における n の剰余逆数を計算します。すなわち、2^N で割った剰余であり、ここで N = 8*sizeof(T)(例えば、Int32 の場合は N = 32)です。言い換えれば、これらのメソッドは以下の等式を満たします:

n * invmod(n) == 1
(n * invmod(n, T)) % T == 1
(n % T) * invmod(n, T) == 1

ここでの * は整数環 T における剰余乗算です。

整数型によって暗黙的に示される剰余を明示的な値として指定することは、剰余が定義上その型で表現できるよりも大きいため、しばしば不便です。

剰余逆数は、https://arxiv.org/pdf/2204.04342.pdf で説明されているアルゴリズムを使用して、一般的なケースよりもはるかに効率的に計算されます。

Julia 1.11

invmod(n) および invmod(n, T) メソッドは、Julia 1.11 以降が必要です。

source
Base.powermodFunction
powermod(x::Integer, p::Integer, m)

\[x^p \pmod m\]

を計算します。

julia> powermod(2, 6, 5)
4

julia> mod(2^6, 5)
4

julia> powermod(5, 2, 20)
5

julia> powermod(5, 2, 19)
6

julia> powermod(5, 3, 19)
11
source
Base.ndigitsFunction
ndigits(n::Integer; base::Integer=10, pad::Integer=1)

整数 n を基数 base で表記したときの桁数を計算します(base[-1, 0, 1] であってはいけません)。オプションで、指定されたサイズにゼロでパディングすることができます(結果は決して pad より小さくなりません)。

関連情報は digitscount_ones を参照してください。

julia> ndigits(0)
1

julia> ndigits(12345)
5

julia> ndigits(1022, base=16)
3

julia> string(1022, base=16)
"3fe"

julia> ndigits(123, pad=5)
5

julia> ndigits(-123)
3
source
Base.add_sumFunction
Base.add_sum(x, y)

sumで使用される還元演算子。+との主な違いは、小さな整数がInt/UIntに昇格されることです。

source
Base.widemulFunction
widemul(x, y)

xy を掛け算し、結果をより大きな型で返します。

関連情報として promoteBase.add_sum を参照してください。

julia> widemul(Float32(3.0), 4.0) isa BigFloat
true

julia> typemax(Int8) * typemax(Int8)
1

julia> widemul(typemax(Int8), typemax(Int8))  # == 127^2
16129
source
Base.Math.evalpolyFunction
evalpoly(x, p)

多項式 $\sum_k x^{k-1} p[k]$ を評価します。係数 p[1], p[2], ... が与えられ、すなわち、係数は x の冪の昇順で与えられます。係数の数が静的に知られている場合、すなわち pTuple の場合、ループはコンパイル時に展開されます。この関数は、x が実数の場合はホーナー法を使用して効率的なコードを生成し、x が複素数の場合はゴーツェルのような [DK62] アルゴリズムを使用します。

Julia 1.4

この関数は Julia 1.4 以降が必要です。

julia> evalpoly(2, (1, 2, 3))
17
source
Base.Math.@evalpolyMacro
@evalpoly(z, c...)

多項式 $\sum_k z^{k-1} c[k]$ を係数 c[1], c[2], ... に対して評価します。すなわち、係数は z の累乗の昇順で与えられます。このマクロは、ホーナー法または、複素数 z の場合はより効率的なゴーツェル類似のアルゴリズムを使用する効率的なインラインコードに展開されます。

詳細は evalpoly を参照してください。

julia> @evalpoly(3, 1, 0, 1)
10

julia> @evalpoly(2, 1, 0, 1)
5

julia> @evalpoly(2, 1, 1, 1)
7
source
Base.FastMath.@fastmathMacro
@fastmath expr

変換された式の実行を行い、厳密なIEEEセマンティクスに違反する可能性のある関数を呼び出します。これにより、可能な限り高速な操作が可能になりますが、結果は未定義です – これを行う際は注意が必要で、数値結果が変わる可能性があります。

これは、LLVM Fast-Mathフラグを設定し、clangの-ffast-mathオプションに対応します。詳細については、パフォーマンス注釈に関するノートを参照してください。

julia> @fastmath 1+2
3

julia> @fastmath(sin(3))
0.1411200080598672
source

Customizable binary operators

いくつかのUnicode文字を使用して、新しい二項演算子を定義することができ、これにより中置記法をサポートします。たとえば、⊗(x,y) = kron(x,y)は、(テンソル積)関数をクロネッカー積として定義し、中置構文を使用して二項演算子として呼び出すことができます:C = A ⊗ B、および通常の接頭辞構文C = ⊗(A,B)でも呼び出すことができます。

他のこのような拡張をサポートする文字には \odot と \oplus が含まれます。

完全なリストはパーサーコードにあります: https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm

*(優先順位の観点から解析されるもの)に含まれるものは、* / ÷ % & ⋅ ∘ × |\\| ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇ ⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻ ⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗ であり、+(優先順位の観点から解析されるもの)に含まれるものは、+ - |\|| ⊕ ⊖ ⊞ ⊟ |++| ∪ ∨ ⊔ ± ∓ ∔ ∸ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⟇ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦ ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣ です。矢印、比較、累乗に関連する多くの他のものもあります。

  • DK62Donald Knuth, Art of Computer Programming, Volume 2: Seminumerical Algorithms, Sec. 4.6.4.