Mathematics
Mathematical Operators
Base.:-
— Method-(x)
Tekil eksi operatörü.
Ayrıca bakınız: abs
, flipsign
.
Örnekler
julia> -1
-1
julia> -(2)
-2
julia> -[1 2; 3 4]
2×2 Matrix{Int64}:
-1 -2
-3 -4
julia> -(true) # Int'e yükseltilir
-1
julia> -(0x003)
0xfffd
Base.:+
— Functiondt::Date + t::Time -> DateTime
Bir Date
ile bir Time
'ın toplanması bir DateTime
üretir. Time
'ın saat, dakika, saniye ve milisaniye kısımları, yeni DateTime
'ı oluşturmak için Date
'in yıl, ay ve günü ile birlikte kullanılır. Time
türündeki sıfırdan farklı mikro saniyeler veya nano saniyeler bir InexactError
hatasının fırlatılmasına neden olacaktır.
+(x, y...)
Toplama operatörü.
İnfix x+y+z+...
bu fonksiyonu tüm argümanlarla çağırır, yani +(x, y, z, ...)
, bu varsayılan olarak soldan başlayarak (x+y) + z + ...
çağırır.
Büyük sayılar toplandığında, varsayılan Int
dahil olmak üzere çoğu tam sayı türü için taşma olasılığının olduğunu unutmayın.
Örnekler
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
Base.:-
— Method-(x, y)
Çıkarma operatörü.
Örnekler
julia> 2 - 3
-1
julia> -(2, 4.5)
-2.5
Base.:*
— Method*(x, y...)
Çarpma operatörü.
İnfix x*y*z*...
bu fonksiyonu tüm argümanlarla çağırır, yani *(x, y, z, ...)
, bu da varsayılan olarak (x*y) * z * ...
şeklinde soldan başlayarak çağrılır.
Yan yana yazım 2pi
gibi ifadeler de *(2, pi)
çağrısını yapar. Bu işlemin, bir literal *
'dan daha yüksek önceliğe sahip olduğunu unutmayın. Ayrıca, yan yana yazım "0x..." (x ile başlayan bir değişkenin sıfır katı) yasaktır çünkü bu, işaretsiz tam sayı literal'leriyle çakışır: 0x01 isa UInt8
.
Büyük sayıları çarparken, varsayılan Int
dahil olmak üzere çoğu tam sayı türü için taşma olasılığının olduğunu unutmayın.
Örnekler
julia> 2 * 7 * 8
112
julia> *(2, 7, 8)
112
julia> [2 0; 0 3] * [1, 10] # matris * vektör
2-element Vector{Int64}:
2
30
julia> 1/2pi, 1/2*pi # yan yana yazım daha yüksek önceliğe sahiptir
(0.15915494309189535, 1.5707963267948966)
julia> x = [1, 2]; x'x # adjoint vektör * vektör
5
Base.:/
— Function/(x, y)
Sağ bölme operatörü: x
'in sağdaki y
'nin tersine çarpımı.
Tam sayı argümanları için kayan nokta sonuçları verir. Tam sayı bölümü için ÷
veya Rational
sonuçları için //
bakın.
Örnekler
julia> 1/2
0.5
julia> 4/2
2.0
julia> 4.5/2
2.25
A / B
Matris sağ-bölümü: A / B
, (B' \ A')'
ile eşdeğerdir; burada \
sol-bölüm operatörüdür. Kare matrisler için, sonuç X
öyle ki A == X*B
olur.
Ayrıca bakınız: rdiv!
.
Örnekler
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
Base.:\
— Method\(x, y)
Sol bölme operatörü: y
'nin sol tarafında x
'in tersinin çarpımı. Tam sayı argümanları için kayan nokta sonuçları verir.
Örnekler
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
Base.:^
— Method^(x, y)
Üst alma operatörü.
Eğer x
ve y
tam sayılar ise, sonuç taşabilir. Bilimsel notasyonda sayılar girmek için 1.2 * 10^3
yerine Float64
literalleri olan 1.2e3
kullanın.
Eğer y
bir Int
literali ise (örneğin x^2
'deki 2
veya x^-3
'deki -3
), Julia kodu x^y
, derleyici tarafından Base.literal_pow(^, x, Val(y))
'ye dönüştürülür; bu, üssün değerine göre derleme zamanı uzmanlaşmasını sağlar. (Varsayılan bir geri dönüş olarak Base.literal_pow(^, x, Val(y)) = ^(x,y)
vardır; burada genellikle ^ == Base.^
'dir, aksi takdirde ^
çağrılan ad alanında tanımlanmışsa farklı olabilir.) Eğer y
negatif bir tam sayı literali ise, o zaman Base.literal_pow
işlemi varsayılan olarak inv(x)^-y
'ye dönüştürülür; burada -y
pozitif bir değerdir.
Ayrıca exp2
, <<
ile de bakabilirsiniz.
Örnekler
julia> 3^5
243
julia> 3^-1 # Base.literal_pow kullanır
0.3333333333333333
julia> p = -1;
julia> 3^p
HATA: -1 ile DomainError:
Bir tam sayıyı negatif bir üste -1 yükseltmek mümkün değil.
[...]
julia> 3.0^p
0.3333333333333333
julia> 10^19 > 0 # tam sayı taşması
false
julia> big(10)^19 == 1e19
true
Base.fma
— Functionfma(x, y, z)
x*y+z
hesaplar, ara sonucu x*y
yuvarlamadan. Bazı sistemlerde bu, x*y+z
'dan önemli ölçüde daha pahalıdır. fma
, belirli algoritmalarda doğruluğu artırmak için kullanılır. muladd
bakın.
Base.muladd
— Functionmuladd(x, y, z)
Birleşik çarpma-toplama: x*y+z
hesaplar, ancak toplama ve çarpmanın birbirleriyle veya çevresindeki işlemlerle birleştirilmesine izin verir. Örneğin, bu, donanımın bunu verimli bir şekilde desteklemesi durumunda bir fma
olarak uygulanabilir. Sonuç, farklı makinelerde farklı olabilir ve aynı makinede de sabit yayılımı veya diğer optimizasyonlar nedeniyle farklı olabilir. fma
için bakın.
Örnekler
julia> muladd(3, 2, 1)
7
julia> 3 * 2 + 1
7
muladd(A, y, z)
Birleşik çarpma-toplama, A*y .+ z
, matris-matris veya matris-vektör çarpımı için. Sonuç her zaman A*y
ile aynı boyuttadır, ancak z
daha küçük olabilir veya bir skalar olabilir.
Bu yöntemler Julia 1.6 veya daha yenisini gerektirir.
Örnekler
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
Base.inv
— Methodinv(x)
x
'in çarpan tersini döndürür, böylece x*inv(x)
veya inv(x)*x
one(x)
(çarpan kimliği) ile yuvarlama hataları göz önüne alındığında eşit olur.
Eğer x
bir sayı ise, bu esasen one(x)/x
ile aynıdır, ancak bazı türler için inv(x)
biraz daha verimli olabilir.
Örnekler
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
inv(::Missing)
en az Julia 1.2'yi gerektirir.
Base.div
— Functiondiv(x, y)
÷(x, y)
Euclidean (tam sayı) bölme işleminin sonucu. Genel olarak, kesirli bir parça olmadan matematiksel bir işlem olan x/y ile eşdeğerdir.
Ayrıca bakınız: cld
, fld
, rem
, divrem
.
Örnekler
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
Base.div
— Methoddiv(x, y, r::RoundingMode=RoundToZero)
Euclidean (tam sayı) bölmeden elde edilen bölüm. x / y
hesaplar, r
yuvarlama moduna göre bir tam sayıya yuvarlanır. Diğer bir deyişle, miktar
round(x / y, r)
herhangi bir ara yuvarlama olmadan.
RoundingMode
alan üç argümanlı yöntem, Julia 1.4 veya daha yenisini gerektirir.
Ayrıca fld
ve cld
ile ilgili, bu fonksiyonun özel durumlarıdır.
RoundFromZero
en az Julia 1.9 gerektirir.
Örnekler:
julia> div(4, 3, RoundToZero) # div(4, 3) ile eşleşir
1
julia> div(4, 3, RoundDown) # fld(4, 3) ile eşleşir
1
julia> div(4, 3, RoundUp) # cld(4, 3) ile eşleşir
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
Base.fld
— Functionfld(x, y)
x / y
'den küçük veya eşit en büyük tam sayı. div(x, y, RoundDown)
ile eşdeğerdir.
Örnekler
julia> fld(7.3, 5.5)
1.0
julia> fld.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) ile eltip Int64:
-2 -2 -1 -1 -1 0 0 0 1 1 1
fld(x, y)
'nin, kayan nokta sayıların gerçek değerine dayalı olarak kesin doğru tabanlı yuvarlama uygulaması nedeniyle, sezgisel olmayan durumlar ortaya çıkabilir. Örneğin:
julia> fld(6.0, 0.1)
59.0
julia> 6.0 / 0.1
60.0
julia> 6.0 / big(0.1)
59.99999999999999666933092612453056361837965690217069245739573412231113406246995
Burada olan, 0.1
olarak yazılan kayan nokta sayısının gerçek değerinin, sayısal değer 1/10'dan biraz daha büyük olmasıdır; oysa 6.0
sayısı tam olarak 6'yı temsil eder. Bu nedenle 6.0 / 0.1
'in gerçek değeri 60'tan biraz daha azdır. Bölme işlemi yapıldığında, bu tam olarak 60.0
'a yuvarlanır, ancak fld(6.0, 0.1)
her zaman gerçek değerin tabanını alır, bu nedenle sonuç 59.0
'dır.
Base.cld
— Functioncld(x, y)
x / y
'ye eşit veya ondan büyük en küçük tam sayı. div(x, y, RoundUp)
ile eşdeğerdir.
Örnekler
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
Base.mod
— Functionmod(x::Integer, r::AbstractUnitRange)
r
aralığında y
'yi bul, böylece $x ≡ y (mod n)$, burada n = length(r)
, yani y = mod(x - first(r), n) + first(r)
.
Ayrıca mod1
bakın.
Örnekler
julia> mod(0, Base.OneTo(3)) # mod1(0, 3)
3
julia> mod(3, 0:2) # mod(3, 3)
0
Bu yöntem en az Julia 1.3 gerektirir.
mod(x, y)
rem(x, y, RoundDown)
x
'in y
'ye göre modülasyonu veya eşdeğer olarak, y
'ye göre tabanlı bölme sonrası x
'in kalanı, yani x - y*fld(x,y)
ifadesi, ara yuvarlama olmadan hesaplandığında.
Sonuç, y
ile aynı işarete sahip olacak ve büyüklüğü abs(y)
'den küçük olacaktır (bazı istisnalarla, aşağıdaki notu inceleyin).
Ondalık sayılarla kullanıldığında, tam sonuç tür tarafından temsil edilemeyebilir ve bu nedenle yuvarlama hatası meydana gelebilir. Özellikle, tam sonuç y
'ye çok yakınsa, y
'ye yuvarlanabilir.
Ayrıca bakınız: 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
rem(x::Integer, T::Type{<:Integer}) -> T
mod(x::Integer, T::Type{<:Integer}) -> T
%(x::Integer, T::Type{<:Integer}) -> T
x
≡ y
(mod n) bul, burada n T
içinde temsil edilebilen tam sayıların sayısıdır ve y
[typemin(T),typemax(T)]
aralığında bir tam sayıdır. Eğer T
herhangi bir tam sayıyı temsil edebiliyorsa (örneğin T == BigInt
), o zaman bu işlem T
'ye bir dönüşüm ile eşdeğerdir.
Örnekler
julia> x = 129 % Int8
-127
julia> typeof(x)
Int8
julia> x = 129 % BigInt
129
julia> typeof(x)
BigInt
Base.rem
— Functionrem(x, y)
%(x, y)
Euclidean bölme kalanı, x
ile aynı işareti taşıyan ve y
'den daha küçük bir değer döndürür. Bu değer her zaman tamdır.
Ayrıca bakınız: div
, mod
, mod1
, divrem
.
Örnekler
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
Base.rem
— Methodrem(x, y, r::RoundingMode=RoundToZero)
x
'in y
ile tam bölümü sonrası kalanını, bölümün r
yuvarlama moduna göre yuvarlanarak hesaplar. Başka bir deyişle, miktar
x - y * round(x / y, r)
herhangi bir ara yuvarlama olmadan.
- eğer
r == RoundNearest
ise, sonuç tamdır ve $[-|y| / 2, |y| / 2]$ aralığındadır. Ayrıca bkz.RoundNearest
. - eğer
r == RoundToZero
(varsayılan), o zaman sonuç tamdır ve $[0, |y|)$ aralığındadır eğerx
pozitifse, aksi takdirde $(-|y|, 0]$ aralığındadır. Ayrıca bkz.RoundToZero
. - eğer
r == RoundDown
ise, sonuç $[0, y)$ aralığındadır eğery
pozitifse, aksi takdirde $(y, 0]$ aralığındadır. Sonuç,x
vey
farklı işaretlere sahipse veabs(x) < abs(y)
ise tam olmayabilir. Ayrıca bkz.RoundDown
. - eğer
r == RoundUp
ise, sonuç $(-y, 0]$ aralığındadır eğery
pozitifse, aksi takdirde $[0, -y)$ aralığındadır. Sonuç,x
vey
aynı işarete sahipse veabs(x) < abs(y)
ise tam olmayabilir. Ayrıca bkz.RoundUp
. - eğer
r == RoundFromZero
ise, sonuç $(-y, 0]$ aralığındadır eğery
pozitifse, aksi takdirde $[0, -y)$ aralığındadır. Sonuç,x
vey
aynı işarete sahipse veabs(x) < abs(y)
ise tam olmayabilir. Ayrıca bkz.RoundFromZero
.
RoundFromZero
en az Julia 1.9 gerektirir.
Örnekler:
julia> x = 9; y = 4;
julia> x % y # rem(x, y) ile aynı
1
julia> x ÷ y # div(x, y) ile aynı
2
julia> x == div(x, y) * y + rem(x, y)
true
Base.Math.rem2pi
— Functionrem2pi(x, r::RoundingMode)
x
'in tam sayısal bölümü sonrası kalanını 2π
ile hesaplar, bölüm r
yuvarlama moduna göre yuvarlanır. Diğer bir deyişle, miktar
x - 2π*round(x/(2π),r)
herhangi bir ara yuvarlama olmadan. Bu, dahili olarak 2π'nin yüksek hassasiyetli bir yaklaşımını kullanır ve bu nedenle rem(x,2π,r)
'den daha doğru bir sonuç verir.
- eğer
r == RoundNearest
ise, sonuç $[-π, π]$ aralığındadır. Bu genellikle en doğru sonuç olacaktır. Ayrıca bkz.RoundNearest
. - eğer
r == RoundToZero
ise, sonuç pozitifse $[0, 2π]$ aralığındadır, aksi takdirde $[-2π, 0]$ aralığındadır. Ayrıca bkz.RoundToZero
. - eğer
r == RoundDown
ise, sonuç $[0, 2π]$ aralığındadır. Ayrıca bkz.RoundDown
. - eğer
r == RoundUp
ise, sonuç $[-2π, 0]$ aralığındadır. Ayrıca bkz.RoundUp
.
Örnekler
julia> rem2pi(7pi/4, RoundNearest)
-0.7853981633974485
julia> rem2pi(7pi/4, RoundDown)
5.497787143782138
Base.Math.mod2pi
— Functionmod2pi(x)
2π
ile bölme sonrası modül, $[0,2π)$ aralığında döner.
Bu fonksiyon, sayısal olarak tam 2π
ile bölme sonrası modülün bir kayan nokta temsilini hesaplar ve bu nedenle mod(x,2π)
ile tam olarak aynı değildir; çünkü mod(x,2π)
x
'in kayan nokta sayısı 2π
ile bölünmesine göre modülünü hesaplar.
Girdi değerinin formatına bağlı olarak, 2π
'ye en yakın temsil edilebilir değer 2π
'den küçük olabilir. Örneğin, mod2pi(2π)
ifadesi 0
döndürmeyecektir, çünkü 2*π
'nin ara değeri bir Float64
'dir ve 2*Float64(π) < 2*big(π)
'dir. Bu davranışın daha ince ayarı için rem2pi
ifadesine bakın.
Örnekler
julia> mod2pi(9*pi/4)
0.7853981633974481
Base.divrem
— Functiondivrem(x, y, r::RoundingMode=RoundToZero)
Euclidean bölme işlemi ile elde edilen bölüm ve kalanı döndürür. (div(x, y, r), rem(x, y, r))
ile eşdeğerdir. Eşit olarak, r
'nin varsayılan değeri ile bu çağrı (x ÷ y, x % y)
ile eşdeğerdir.
Örnekler
julia> divrem(3, 7)
(0, 3)
julia> divrem(7, 3)
(2, 1)
Base.fldmod
— Functionfldmod(x, y)
Bölme işleminden sonra tabanlı bölüm ve modül. divrem(x, y, RoundDown)
için bir kolaylık sarmalayıcı. (fld(x, y), mod(x, y))
ile eşdeğerdir.
Base.fld1
— Functionfld1(x, y)
Kattığı bölme, mod1(x,y)
ile tutarlı bir değer döndürür.
Örnekler
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
Base.mod1
— Functionmod1(x, y)
Zemin bölme sonrası modül, mod(r, y) == mod(x, y)
olacak şekilde bir değer r
döndürür; pozitif y
için $(0, y]$ aralığında ve negatif y
için $[y,0)$ aralığında.
Tam sayı argümanları ve pozitif y
ile bu, mod(x, 1:y)
ile eşdeğerdir ve bu nedenle 1 tabanlı indeksleme için doğaldır. Karşılaştırıldığında, mod(x, y) == mod(x, 0:y-1)
ofsetler veya adımlar ile hesaplamalar için doğaldır.
Ayrıca bkz. mod
, fld1
, fldmod1
.
Örnekler
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
Base.fldmod1
— FunctionBase.://
— Function//(num, den)
İki tam sayıyı veya rasyonel sayıyı bölerek Rational
sonucu verir. Daha genel olarak, //
tam sayı veya rasyonel bileşenlere sahip diğer sayısal türlerin tam rasyonel bölümü için kullanılabilir; örneğin, tam sayı bileşenlerine sahip karmaşık sayılar.
//
ile kayan nokta (AbstractFloat
) argümanlarına izin verilmediğini unutmayın (değerler rasyonel olsa bile). Argümanlar Integer
, Rational
veya bunların bileşenleri olan alt türler olmalıdır.
Örnekler
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
HATA: MethodError: no method matching //(::Float64, ::Int64)
[...]
Base.rationalize
— Functionrationalize([T<:Integer=Int,] x; tol::Real=eps(x))
Verilen tam sayı türünün bileşenleri ile x
sayısını Rational
sayısı olarak yaklaşık bir şekilde ifade edin. Sonuç, x
'ten tol
kadar bir farkla farklı olacaktır.
Örnekler
julia> rationalize(5.6)
28//5
julia> a = rationalize(BigInt, 10.3)
103//10
julia> typeof(numerator(a))
BigInt
Base.numerator
— Functionnumerator(x)
x
'in rasyonel temsilinin payı.
Örnekler
julia> numerator(2//3)
2
julia> numerator(4)
4
Base.denominator
— Functiondenominator(x)
x
'in rasyonel temsilinin paydası.
Örnekler
julia> denominator(2//3)
3
julia> denominator(4)
1
Base.:<<
— Function<<(x, n)
Sol taraftan bit kaydırma operatörü, x << n
. n >= 0
için, sonuç x
'in n
bit sola kaydırılmasıdır, 0
ile doldurulur. Bu, x * 2^n
ile eşdeğerdir. n < 0
için, bu x >> -n
ile eşdeğerdir.
Örnekler
julia> Int8(3) << 2
12
julia> bitstring(Int8(3))
"00000011"
julia> bitstring(Int8(12))
"00001100"
<<(B::BitVector, n) -> BitVector
Sol bit kaydırma operatörü, B << n
. n >= 0
için, sonuç B
'nin elemanları n
pozisyon geri kaydırılarak, false
değerleri ile doldurulmasıdır. Eğer n < 0
ise, elemanlar ileri kaydırılır. B >> -n
ile eşdeğerdir.
Örnekler
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
Base.:>>
— Function>>(x, n)
Sağ bit kaydırma operatörü, x >> n
. n >= 0
için, sonuç x
'in n
bit sağa kaydırılmasıdır; x >= 0
ise 0
ile, x < 0
ise 1
ile doldurularak x
'in işareti korunur. Bu, fld(x, 2^n)
ile eşdeğerdir. n < 0
için, bu x << -n
ile eşdeğerdir.
Örnekler
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"
>>(B::BitVector, n) -> BitVector
Sağ bit kaydırma operatörü, B >> n
. n >= 0
için, sonuç B
'nin elemanlarının n
pozisyon ileri kaydırılmasıyla elde edilir ve false
değerleriyle doldurulur. Eğer n < 0
ise, elemanlar geriye kaydırılır. B << -n
ile eşdeğerdir.
Örnekler
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
Base.:>>>
— Function>>>(x, n)
Unsigned sağ bit kaydırma operatörü, x >>> n
. n >= 0
için, sonuç x
'in n
bit sağa kaydırılmasıdır ve 0
ile doldurulur. n < 0
için, bu x << -n
ile eşdeğerdir.
Unsigned
tam sayı türleri için, bu >>
ile eşdeğerdir. Signed
tam sayı türleri için, bu signed(unsigned(x) >> n)
ile eşdeğerdir.
Örnekler
julia> Int8(-14) >>> 2
60
julia> bitstring(Int8(-14))
"11110010"
julia> bitstring(Int8(60))
"00111100"
BigInt
ler sonsuz boyutta gibi kabul edilir, bu nedenle doldurmaya gerek yoktur ve bu >>
ile eşdeğerdir.
>>>(B::BitVector, n) -> BitVector
İşaretsiz sağ bit kaydırma operatörü, B >>> n
. B >> n
ile eşdeğerdir. Ayrıntılar ve örnekler için >>
kısmına bakın.
Base.bitrotate
— Functionbitrotate(x::Base.BitInteger, k::Integer)
bitrotate(x, k)
bit düzeyinde döndürme işlemi gerçekleştirir. x
'in bitlerini k
kez sola döndürerek değerini döndürür. k
'nın negatif bir değeri sağa döndürme işlemi yapar.
Bu fonksiyon Julia 1.5 veya daha yenisini gerektirir.
Ayrıca bakınız: <<
, 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"
Base.::
— Function:expr
Bir ifadeyi expr
alıntılayın ve expr
'nin soyut sözdizim ağacını (AST) döndürün. AST, Expr
, Symbol
veya bir literal değer türünde olabilir. :identifier
sözdizimi bir Symbol
'a değerlenecektir.
Ayrıca bakınız: Expr
, Symbol
, Meta.parse
Örnekler
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}
Base.range
— Functionrange(start, stop, length)
range(start, stop; length, step)
range(start; length, stop, step)
range(;start, length, stop, step)
Argümanlardan eşit aralıklı elemanlarla ve optimize edilmiş depolama ile özel bir dizi (bir AbstractRange
) oluşturun. Matematiksel olarak bir aralık, start
, step
, stop
ve length
'in herhangi üçü ile benzersiz bir şekilde belirlenir. Geçerli range
çağrıları şunlardır:
start
,step
,stop
,length
'in herhangi üçü ilerange
çağrısı yapın.start
,stop
,length
'in iki tanesi ilerange
çağrısı yapın. Bu durumdastep
bir olarak varsayılacaktır. Her iki argüman da Tam Sayı ise, birUnitRange
döndürülecektir.stop
veyalength
'in bir tanesi ilerange
çağrısı yapın.start
vestep
bir olarak varsayılacaktır.
Dönülen tür hakkında ek bilgiler için Genişletilmiş Yardım'a bakın. Ayrıca logaritmik olarak aralıklı noktalar için logrange
ile de bakabilirsiniz.
Örnekler
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
Eğer length
belirtilmemişse ve stop - start
bir tam sayı katı değilse, stop
'dan önce biten bir aralık üretilecektir.
julia> range(1, 3.5, step=2)
1.0:2.0:3.0
Ara değerlerin rasyonel olarak hesaplanmasını sağlamak için özel önlemler alınmıştır. Bu neden olduğu aşırı yükten kaçınmak için LinRange
yapıcısına bakın.
stop
bir konum argümanı olarak en az Julia 1.1 gerektirir.
Anahtar kelime argümanları olmadan ve start
bir anahtar kelime argümanı olarak en az Julia 1.7 gerektirir.
stop
yalnızca bir anahtar kelime argümanı olarak veya length
yalnızca bir anahtar kelime argümanı olarak gerektiren sürümler en az Julia 1.8 gerektirir.
Genişletilmiş Yardım
range
, argümanlar Tam Sayı olduğunda bir Base.OneTo
üretecektir ve
- Sadece
length
sağlandığında - Sadece
stop
sağlandığında
range
, argümanlar Tam Sayı olduğunda bir UnitRange
üretecektir ve
- Sadece
start
vestop
sağlandığında - Sadece
length
vestop
sağlandığında
Bir UnitRange
, step
sağlandığında, bir olarak belirtilse bile üretilmez.
Base.OneTo
— TypeBase.OneTo(n)
1:n
gibi davranan bir AbstractUnitRange
tanımlayın, ek olarak alt sınırın (tip sistemi tarafından) 1 olarak garanti edildiği bir ayrım ile.
Base.StepRangeLen
— TypeStepRangeLen( 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}
Bir aralık r
burada r[i]
değerleri T
türünde üretir (ilk formda, T
otomatik olarak çıkarılır), bir ref
erans değeri, bir step
ve len
gth ile parametrelenmiştir. Varsayılan olarak ref
, başlangıç değeri r[1]
dir, ancak alternatif olarak bunu r[offset]
değerinin değeri olarak sağlayabilirsiniz, burada başka bir indeks için 1 <= offset <= len
. a:b
veya a:b:c
sözdizimi, a
, b
veya c
'nin herhangi birinin ondalık sayılar olduğu durumlarda bir StepRangeLen
oluşturur.
- tür parametresi
L
, en az Julia 1.7'yi gerektirir.
Base.logrange
— Functionlogrange(start, stop, length)
logrange(start, stop; length)
Verilen uç noktalar arasında logaritmik olarak aralıklı elemanlara sahip özel bir dizi oluşturur. Yani, ardışık elemanların oranı, uzunluktan hesaplanan sabit bir değerdir.
Bu, Python'daki geomspace
'e benzer. Mathematica'daki PowerRange
'in aksine, eleman sayısını belirtirsiniz, oranı değil. Python ve Matlab'daki logspace
'in aksine, start
ve stop
argümanları her zaman sonucun ilk ve son elemanlarıdır, bazı birimlere uygulanmış güçler değil.
Örnekler
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) # orta eleman geometrik ortadır
true
julia> range(10, 40, length=3)[2] ≈ (10 + 40)/2 # aritmetik ortadır
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
Daha fazla ayrıntı için LogRange
türüne bakın.
Ayrıca, lineer olarak aralıklı noktalar için range
ile de bakabilirsiniz.
Bu fonksiyon en az Julia 1.11 gerektirir.
Base.LogRange
— TypeLogRange{T}(başlangıç, durdur, uzunluk) <: AbstractVector{T}
başlangıç
ve durdur
arasında logaritmik olarak aralıklı elemanlara sahip bir aralık, aralık uzunluk
ile kontrol edilir. logrange
tarafından döndürülür.
LinRange
gibi, ilk ve son elemanlar tam olarak sağlananlar olacaktır, ancak ara değerlerde küçük kayan nokta hataları olabilir. Bu değerler, inşaat sırasında saklanan uç noktaların logaritmaları kullanılarak hesaplanır ve genellikle T
'den daha yüksek bir hassasiyetle saklanır.
Örnekler
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
Tam sayı eltipi T
'ye izin verilmez. Örneğin round.(Int, xs)
veya bazı tam sayı tabanlarının açık kuvvetlerini kullanın:
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]
Bu tür en az Julia 1.11 gerektirir.
Base.:==
— Function==(x, y)
Genel eşitlik operatörü. ===
ile geri dönmektedir. Eşitlik kavramına sahip tüm türler için, bir örneğin temsil ettiği soyut değere dayalı olarak uygulanmalıdır. Örneğin, tüm sayısal türler sayısal değerlerine göre karşılaştırılır, tür göz ardı edilir. Dizeler, kodlamayı göz ardı ederek karakter dizileri olarak karşılaştırılır. Aynı türdeki koleksiyonlar genellikle anahtar kümelerini karşılaştırır ve eğer bunlar ==
ise, o anahtarlar için değerleri karşılaştırır ve tüm bu çiftler ==
ise true döner. Diğer özellikler genellikle dikkate alınmaz (örneğin, tam tür).
Bu operatör, kayan noktalı sayılar için IEEE semantiğini takip eder: 0.0 == -0.0
ve NaN != NaN
.
Sonuç Bool
türündedir, bir operand missing
olduğunda, bu durumda missing
döner (üç değerli mantık). Koleksiyonlar genellikle all
benzeri üç değerli mantığı uygular, herhangi bir operand missing
değer içeriyorsa ve diğer tüm çiftler eşitse missing
döner. Her zaman Bool
sonucu almak için isequal
veya ===
kullanın.
Uygulama
Yeni sayısal türler, yeni türün iki argümanı için bu işlevi uygulamalı ve mümkün olduğunda diğer türlerle karşılaştırmayı terfi kuralları aracılığıyla ele almalıdır.
isequal
==
ile geri döner, bu nedenle ==
için yeni yöntemler Dict
türü tarafından anahtarları karşılaştırmak için kullanılacaktır. Eğer türünüz bir sözlük anahtarı olarak kullanılacaksa, bu nedenle hash
işlevini de uygulamalıdır.
Eğer bir tür ==
, isequal
ve isless
tanımlıyorsa, karşılaştırmaların tutarlılığını sağlamak için <
işlevini de uygulamalıdır.
Base.:!=
— Function!=(x, y)
≠(x,y)
Eşit olmama karşılaştırma operatörü. Her zaman ==
ile ters cevap verir.
Uygulama
Yeni türler genellikle bunu uygulamamalı ve bunun yerine !=(x,y) = !(x==y)
yedek tanımına güvenmelidir.
Örnekler
julia> 3 != 2
true
julia> "foo" ≠ "foo"
false
!=(x)
x
ile argümanını !=
kullanarak karşılaştıran bir fonksiyon oluşturun, yani y -> y != x
ile eşdeğer bir fonksiyon. Döndürülen fonksiyon Base.Fix2{typeof(!=)}
türündedir ve özel yöntemleri uygulamak için kullanılabilir.
Bu işlevsellik en az Julia 1.2'yi gerektirir.
Base.:!==
— Function!==(x, y)
≢(x,y)
Her zaman ===
ile ters cevap verir.
Örnekler
julia> a = [1, 2]; b = [1, 2];
julia> a ≢ b
true
julia> a ≢ a
false
Base.:<
— Function<(x, y)
Küçükten büyüğe karşılaştırma operatörü. isless
fonksiyonuna geri döner. Kayar nokta NaN değerlerinin davranışı nedeniyle, bu operatör kısmi bir sıralama uygular.
Uygulama
Kanonik bir kısmi sıralamaya sahip yeni türler, bu fonksiyonu yeni türün iki argümanı için uygulamalıdır. Kanonik bir tam sıralamaya sahip türler ise isless
fonksiyonunu uygulamalıdır.
Ayrıca bkz. isunordered
.
Örnekler
julia> 'a' < 'b'
true
julia> "abc" < "abd"
true
julia> 5 < 3
false
<(x)
x
ile argümanını <
kullanarak karşılaştıran bir fonksiyon oluşturun, yani y -> y < x
ile eşdeğer bir fonksiyon. Döndürülen fonksiyon Base.Fix2{typeof(<)}
türündedir ve özel yöntemler uygulamak için kullanılabilir.
Bu işlevsellik en az Julia 1.2 gerektirir.
Base.:<=
— Function<=(x, y)
≤(x,y)
Küçük veya eşit karşılaştırma operatörü. (x < y) | (x == y)
ifadesine geri döner.
Örnekler
julia> 'a' <= 'b'
true
julia> 7 ≤ 7 ≤ 9
true
julia> "abc" ≤ "abc"
true
julia> 5 <= 3
false
<=(x)
x
ile argümanını <=
kullanarak karşılaştıran bir fonksiyon oluşturun, yani y -> y <= x
ile eşdeğer bir fonksiyon. Döndürülen fonksiyon Base.Fix2{typeof(<=)}
türündedir ve özel yöntemleri uygulamak için kullanılabilir.
Bu işlevsellik en az Julia 1.2 gerektirir.
Base.:>
— Function>(x, y)
Büyüktür karşılaştırma operatörü. y < x
ifadesine geri döner.
Uygulama
Genel olarak, yeni türler bu fonksiyonu yerine <
uygulamalıdır ve geri dönüş tanımına >(x, y) = y < x
dayanmalıdır.
Örnekler
julia> 'a' > 'b'
false
julia> 7 > 3 > 1
true
julia> "abc" > "abd"
false
julia> 5 > 3
true
>(x)
x
ile >
kullanarak argümanını karşılaştıran bir fonksiyon oluşturun, yani y -> y > x
ile eşdeğer bir fonksiyon. Döndürülen fonksiyon Base.Fix2{typeof(>)}
türündedir ve özel yöntemleri uygulamak için kullanılabilir.
Bu işlevsellik en az Julia 1.2 gerektirir.
Base.:>=
— Function>=(x, y)
≥(x,y)
Büyüktür veya eşittir karşılaştırma operatörü. y <= x
ifadesine geri döner.
Örnekler
julia> 'a' >= 'b'
false
julia> 7 ≥ 7 ≥ 3
true
julia> "abc" ≥ "abc"
true
julia> 5 >= 3
true
>=(x)
x
ile argümanını >=
kullanarak karşılaştıran bir fonksiyon oluşturun, yani y -> y >= x
fonksiyonuna eşdeğer bir fonksiyon. Döndürülen fonksiyon Base.Fix2{typeof(>=)}
türündedir ve özel yöntemleri uygulamak için kullanılabilir.
Bu işlevsellik en az Julia 1.2'yi gerektirir.
Base.cmp
— Functioncmp(x,y)
x
'in y
'den küçük, eşit veya büyük olup olmadığına bağlı olarak sırasıyla -1, 0 veya 1 döner. isless
tarafından uygulanan toplam sıralamayı kullanır.
Örnekler
julia> cmp(1, 2)
-1
julia> cmp(2, 1)
1
julia> cmp(2+im, 3-im)
HATA: MethodError: no method matching isless(::Complex{Int64}, ::Complex{Int64})
[...]
cmp(<, x, y)
x
'in y
'den küçük, eşit veya büyük olup olmadığına bağlı olarak sırasıyla -1, 0 veya 1 döner. İlk argüman, kullanılacak bir küçükten küçüğe karşılaştırma fonksiyonunu belirtir.
cmp(a::AbstractString, b::AbstractString) -> Int
İki dizeyi karşılaştır. Her iki dize de aynı uzunluktaysa ve her bir indeksteki karakterler her iki dizede de aynıysa 0
döndür. a
, b
'nin ön eki ise veya a
, b
'den alfabetik sırada önce geliyorsa -1
döndür. b
, a
'nın ön eki ise veya b
, a
'dan alfabetik sırada önce geliyorsa (teknik olarak, Unicode kod noktalarına göre leksikografik sırada) 1
döndür.
Örnekler
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
Base.:~
— FunctionBase.:&
— Functionx & y
Bitwise ve. Üç değerli mantık uygular, bir operand missing
ve diğeri true
ise missing
döner. Fonksiyon uygulama biçimi için parantez ekleyin: (&)(x, y)
.
Örnekler
julia> 4 & 10
0
julia> 4 & 12
4
julia> true & missing
missing
julia> false & missing
false
Base.:|
— Functionx | y
Bitwise veya. Üç değerli mantık uygular, bir operand missing
ve diğeri false
ise missing
döner.
Örnekler
julia> 4 | 10
14
julia> 4 | 1
5
julia> true | missing
true
julia> false | missing
missing
Base.xor
— Functionxor(x, y)
⊻(x, y)
x
ve y
'nin bit düzeyinde özel veya işlemi. Eğer argümanlardan biri missing
ise missing
döner.
İnfix işlem a ⊻ b
, xor(a,b)
için bir eşanlamlıdır ve ⊻
Julia REPL'de \xor
veya \veebar
yazarak tamamlanabilir.
Örnekler
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
Base.nand
— Functionnand(x, y)
⊼(x, y)
x
ve y
'nin bit düzeyinde nand (ve değil) işlemi. missing
olan bir argüman varsa, üç değerli mantık uygular.
İnfix işlemi a ⊼ b
, nand(a,b)
için bir eşanlamlıdır ve ⊼
Julia REPL'de \nand
veya \barwedge
yazarak tamamlanabilir.
Örnekler
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
Base.nor
— Functionnor(x, y)
⊽(x, y)
x
ve y
'nin bit düzeyinde nor (değil veya) işlemi. Eğer argümanlardan biri missing
ise ve diğeri true
değilse missing
döner.
İnfix işlemi a ⊽ b
, nor(a,b)
için bir eşanlamlıdır ve ⊽
Julia REPL'de \nor
veya \barvee
yazarak otomatik tamamlama ile yazılabilir.
Örnekler
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
Base.:!
— Function!(x)
Boolean değil. missing
döndürerek üç değerli mantık uygular, eğer x
missing
ise.
Ayrıca ~
bit düzeyinde değil için bakınız.
Örnekler
julia> !true
false
julia> !false
true
julia> !missing
missing
julia> .![true false true]
1×3 BitMatrix:
0 1 0
!f::Function
Predikat fonksiyonun olumsuzlanması: !
'nin argümanı bir fonksiyon olduğunda, f
'nin boolean olumsuzlamasını hesaplayan bir bileşik fonksiyon döndürür.
Ayrıca bkz. ∘
.
Örnekler
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 ile birlikte, !f
bir ComposedFunction
döndürür, anonim bir fonksiyon yerine.
&&
— Keywordx && y
Kısa devre boolean VE.
Ayrıca bkz. &
, üçlü operatör ? :
, ve kontrol akışı ile ilgili kılavuz bölümü.
Örnekler
julia> x = 3;
julia> x > 1 && x < 10 && x isa Int
true
julia> x < 0 && error("beklenen pozitif x")
false
||
— Keywordx || y
Kısa devre boolean VEYA.
Örnekler
julia> pi < 3 || ℯ < 3
true
julia> false || true || println("hiçbiri doğru değil!")
true
Mathematical Functions
Base.isapprox
— Functionisapprox(x, y; atol::Real=0, rtol::Real=atol>0 ? 0 : √eps, nans::Bool=false[, norm::Function])
Kesin olmayan eşitlik karşılaştırması. İki sayı, göreceli mesafeleri veya mutlak mesafeleri tolerans sınırları içinde ise eşit kabul edilir: isapprox
, norm(x-y) <= max(atol, rtol*max(norm(x), norm(y)))
koşulu sağlandığında true
döner. Varsayılan atol
(mutlak tolerans) sıfırdır ve varsayılan rtol
(göreceli tolerans) x
ve y
'nin türlerine bağlıdır. nans
anahtar argümanı, NaN değerlerinin eşit kabul edilip edilmediğini belirler (varsayılan olarak false).
Gerçek veya karmaşık kayan nokta değerleri için, atol > 0
belirtilmemişse, rtol
, x
veya y
türlerinin en büyüğünün eps
kareköküne varsayılan olarak ayarlanır (en az hassas). Bu, yaklaşık olarak yarım anlamlı basamağın eşitliğini gerektirir. Aksi takdirde, örneğin tam sayı argümanları için veya atol > 0
sağlanmışsa, rtol
varsayılan olarak sıfırdır.
norm
anahtar kelimesi, sayısal (x,y)
için abs
ve diziler için LinearAlgebra.norm
olarak varsayılan ayarlanmıştır (alternatif bir norm
seçeneği bazen faydalı olabilir). x
ve y
diziler olduğunda, norm(x-y)
sonlu değilse (yani ±Inf
veya NaN
), karşılaştırma, x
ve y
'nin tüm elemanlarının bileşen bazında yaklaşık eşit olup olmadığını kontrol etmeye geri döner.
İkili operatör ≈
, varsayılan argümanlarla isapprox
ile eşdeğerdir ve x ≉ y
, !isapprox(x,y)
ile eşdeğerdir.
x ≈ 0
(yani, varsayılan toleranslarla sıfıra karşılaştırma) x == 0
ile eşdeğerdir çünkü varsayılan atol
sıfırdır. Bu tür durumlarda, uygun bir atol
sağlamalı (veya norm(x) ≤ atol
kullanmalısınız) veya kodunuzu yeniden düzenlemelisiniz (örneğin, x ≈ y
kullanmak yerine x - y ≈ 0
kullanın). Sıfırdan farklı bir atol
otomatik olarak seçmek mümkün değildir çünkü bu, probleminizin genel ölçeklenmesine (birimlerine) bağlıdır: örneğin, x - y ≈ 0
durumunda, atol=1e-9
, x
Dünya'nın yarıçapı metre cinsinden ise son derece küçük bir tolerans, ancak x
Hidrojen atomunun yarıçapı metre cinsinden ise son derece büyük bir tolerans olur.
Sayısal (dizi olmayan) argümanları karşılaştırırken norm
anahtar argümanını geçmek, Julia 1.6 veya daha yenisini gerektirir.
Örnekler
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
isapprox(x; kwargs...) / ≈(x; kwargs...)
x
ile argümanını ≈
kullanarak karşılaştıran bir fonksiyon oluşturun, yani y -> y ≈ x
ile eşdeğer bir fonksiyon.
Burada desteklenen anahtar kelime argümanları, 2-argümanlı isapprox
ile aynı olanlardır.
Bu yöntem Julia 1.5 veya daha yenisini gerektirir.
Base.sin
— Methodsin(x)
x
radyan cinsinden x
'in sinüsünü hesaplayın.
Ayrıca bkz. sind
, sinpi
, sincos
, cis
, asin
.
Örnekler
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
Base.cos
— MethodBase.Math.sincos
— Methodsincos(x)
x
radyan cinsinden olduğunda x
'in sinüs ve kosinüsünü aynı anda hesaplayarak (sinüs, kosinüs)
şeklinde bir demet döndürür.
Base.tan
— Methodtan(x)
x
radyan cinsinden olduğunda x
'in tanjantını hesaplayın.
Base.Math.sind
— Functionsind(x)
x
dereces cinsinden sine
değerini hesaplar. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.cosd
— Functioncosd(x)
x
derecesinde kosinüsünü hesaplar. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.tand
— Functiontand(x)
x
derecesinde x
'in tanjantını hesaplayın. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.sincosd
— Functionsincosd(x)
x
dereces cinsinden olduğunda, x
'in sinüs ve kosinüsünü aynı anda hesaplar.
Bu fonksiyon en az Julia 1.3 gerektirir.
Base.Math.sinpi
— Functionsinpi(x)
\[\sin(\pi x)\]
'i sin(pi*x)
'ten daha hassas bir şekilde hesaplayın, özellikle büyük x
için.
Base.Math.cospi
— Functioncospi(x)
\[\cos(\pi x)\]
'ı, özellikle büyük x
için cos(pi*x)
'ten daha doğru bir şekilde hesaplayın.
Base.Math.tanpi
— Functiontanpi(x)
\[\tan(\pi x)\]
'i tan(pi*x)
'ten daha doğru bir şekilde hesaplar, özellikle büyük x
için.
Bu fonksiyon en az Julia 1.10 gerektirir.
Base.Math.sincospi
— Functionsincospi(x)
Aynı anda sinpi(x)
ve cospi(x)
(sırasıyla π*x
'in sinüsü ve kosinüsü, burada x
radyan cinsindendir) hesaplayarak (sinüs, kosinüs)
şeklinde bir demet döner.
Bu fonksiyon Julia 1.6 veya daha yenisini gerektirir.
Base.sinh
— Methodsinh(x)
x
'in hiperbolik sinüsünü hesaplar.
Base.cosh
— Methodcosh(x)
x
'in hiperbolik kosinüsünü hesaplayın.
Base.tanh
— Methodtanh(x)
x
'in hiperbolik tanjantını hesaplayın.
Örnekler
julia> tanh.(-3:3f0) # Burada 3f0 Float32'dir
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
Base.asin
— Methodasin(x)
x
'in tersine sinüsünü hesaplar, çıktı radyan cinsindendir.
Ayrıca asind
ile derece cinsinden çıktı için bakınız.
Örnekler
julia> asin.((0, 1/2, 1))
(0.0, 0.5235987755982989, 1.5707963267948966)
julia> asind.((0, 1/2, 1))
(0.0, 30.000000000000004, 90.0)
Base.acos
— Methodacos(x)
x
'in tersine kosinüsünü hesaplar, çıktı radyan cinsindendir.
Base.atan
— Methodatan(y)
atan(y, x)
y
veya y/x
'nin ters tanjantını hesaplayın.
Bir gerçek argüman için, bu, pozitif x-ekseni ile (1, y) noktası arasındaki açıdır ve $[-\pi/2, \pi/2]$ aralığında bir değer döndürür.
İki argüman için, bu, pozitif x-ekseni ile (x, y) noktası arasındaki açıdır ve $[-\pi, \pi]$ aralığında bir değer döndürür. Bu, standart atan2
fonksiyonuna karşılık gelir. Not edin ki, geleneksel olarak atan(0.0,x)
değeri $\pi$ olarak tanımlanır ve atan(-0.0,x)
değeri x < 0
olduğunda $-\pi$ olarak tanımlanır.
Ayrıca atand
için dereceleri kontrol edin.
Örnekler
julia> rad2deg(atan(-1/√3))
-30.000000000000004
julia> rad2deg(atan(-1, √3))
-30.000000000000004
julia> rad2deg(atan(1, -√3))
150.0
Base.Math.asind
— Functionasind(x)
x
'in tersine sinüsünü hesaplar; çıktı derece cinsindendir. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.acosd
— Functionacosd(x)
x
'in ters açısını hesaplar, çıktı derece cinsindendir. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.atand
— Functionatand(y)
atand(y,x)
y
veya y/x
'nin ters tanjantını hesaplayın; çıktı dereceler cinsindendir.
Tek argümanlı yöntem, Julia 1.7 itibarıyla kare matris argümanlarını desteklemektedir.
Base.Math.sec
— Methodsec(x)
x
radyan cinsinden olduğunda x
'in sekantını hesaplayın.
Base.Math.csc
— Methodcsc(x)
x
radyan cinsinden olduğunda x
'in koskecantını hesaplayın.
Base.Math.cot
— Methodcot(x)
x
radyan cinsinden cotanjantını hesaplayın.
Base.Math.secd
— Functionsecd(x)
x
dereces cinsinden secantını hesaplar.
Base.Math.cscd
— Functioncscd(x)
x
dereces cosecant'ını hesaplar.
Base.Math.cotd
— Functioncotd(x)
x
dereces cinsinden cotanjantını hesaplar.
Base.Math.asec
— Methodasec(x)
x
'in tersine sekantını hesaplayın, çıktı radyan cinsindendir.
Base.Math.acsc
— Methodacsc(x)
x
'in tersine kosekantını hesaplar, çıktı radyan cinsindendir.
Base.Math.acot
— Methodacot(x)
x
'in tersine kotanjantını hesaplar, çıktı radyan cinsindendir.
Base.Math.asecd
— Functionasecd(x)
x
'in ters açısını hesaplar, çıktı derece cinsindendir. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.acscd
— Functionacscd(x)
x
'in tersine kosekantını hesaplayın, burada çıktı dereceler cinsindendir. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.acotd
— Functionacotd(x)
x
'in tersine kotanjantını hesaplar, çıktı derece cinsindendir. Eğer x
bir matris ise, x
kare bir matris olmalıdır.
Matris argümanları Julia 1.7 veya daha yenisini gerektirir.
Base.Math.sech
— Methodsech(x)
x
'in hiperbolik sekantını hesaplayın.
Base.Math.csch
— Methodcsch(x)
x
'in hiperbolik kosinüs karşıtını hesaplar.
Base.Math.coth
— Methodcoth(x)
x
'in hiperbolik kotanjantını hesaplayın.
Base.asinh
— Methodasinh(x)
x
'in ters hiperbolik sinüsünü hesaplar.
Base.acosh
— Methodacosh(x)
x
'in ters hiperbolik kosinüsünü hesaplar.
Base.atanh
— Methodatanh(x)
x
'in ters hiperbolik tanjantını hesaplayın.
Base.Math.asech
— Methodasech(x)
x
'in ters hiperbolik sekantını hesaplar.
Base.Math.acsch
— Methodacsch(x)
x
'in ters hiperbolik kosinüsünü hesaplar.
Base.Math.acoth
— Methodacoth(x)
x
'in ters hiperbolik kotanjantını hesaplar.
Base.Math.sinc
— Functionsinc(x)
Normalize edilmiş sinc fonksiyonunu $\operatorname{sinc}(x) = \sin(\pi x) / (\pi x)$ olarak hesaplayın, eğer $x \neq 0$ ise, ve $1$ eğer $x = 0$ ise.
Ayrıca cosc
ve onun türevine de bakın.
Base.Math.cosc
— Functioncosc(x)
\[\cos(\pi x) / x - \sin(\pi x) / (\pi x^2)\]
hesaplayın eğer $x \neq 0$, ve $0$ eğer $x = 0$. Bu sinc(x)
'in türevidir.
Ayrıca bkz. sinc
.
Base.Math.deg2rad
— Functiondeg2rad(x)
x
değerini derece cinsinden radyana dönüştürür.
Ayrıca bkz. rad2deg
, sind
, pi
.
Örnekler
julia> deg2rad(90)
1.5707963267948966
Base.Math.rad2deg
— Functionrad2deg(x)
x
değerini radyandan dereceye dönüştürür.
Ayrıca bkz. deg2rad
.
Örnekler
julia> rad2deg(pi)
180.0
Base.Math.hypot
— Functionhypot(x, y)
Hipotenüsü hesaplar $\sqrt{|x|^2+|y|^2}$ taşma ve alt taşmayı önleyerek.
Bu kod, Carlos F. Borges tarafından tanımlanan hypot(a,b)
algoritmasının bir uygulamasıdır. Makale çevrimiçi olarak arXiv'de şu bağlantıda mevcuttur: https://arxiv.org/abs/1904.09481
hypot(x...)
Hipotenüsü hesaplar $\sqrt{\sum |x_i|^2}$ taşma ve alt taşmayı önleyerek.
Ayrıca norm
'u LinearAlgebra
standart kütüphanesinde görebilirsiniz.
Örnekler
julia> a = Int64(10)^10;
julia> hypot(a, a)
1.4142135623730951e10
julia> √(a^2 + a^2) # a^2 taşar
HATA: DomainError with -2.914184810805068e18:
sqrt negatif bir reel argüman ile çağrıldı, ancak yalnızca karmaşık bir argüman ile çağrıldığında karmaşık bir sonuç döndürecektir. sqrt(Complex(x)) ile denemeyi deneyin.
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
Base.log
— Methodlog(x)
x
'in doğal logaritmasını hesaplar.
Negatif Real
argümanlar için DomainError
fırlatır. Karmaşık sonuçlar elde etmek için karmaşık argümanlar kullanın. Negatif reel eksen boyunca bir dal kesimi vardır; bu eksenin altında -0.0im
alınır.
Ayrıca bkz. ℯ
, log1p
, log2
, log10
.
Örnekler
julia> log(2)
0.6931471805599453
julia> log(-3)
HATA: DomainError with -3.0:
log negatif reel bir argüman ile çağrıldı ancak yalnızca karmaşık bir argüman ile çağrıldığında karmaşık bir sonuç döndürecektir. log(Complex(x))'i deneyin.
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
Base.log
— Methodlog(b,x)
x
'in taban b
logaritmasını hesaplar. Negatif Real
argümanlar için DomainError
fırlatır.
Örnekler
julia> log(4,8)
1.5
julia> log(4,2)
0.5
julia> log(-2, 3)
HATA: -2.0 ile DomainError:
log negatif bir gerçek argüman ile çağrıldı, ancak karmaşık bir argüman ile çağrıldığında yalnızca karmaşık bir sonuç döndürecektir. log(Complex(x))'i deneyin.
Stacktrace:
[1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]
julia> log(2, -3)
HATA: -3.0 ile DomainError:
log negatif bir gerçek argüman ile çağrıldı, ancak karmaşık bir argüman ile çağrıldığında yalnızca karmaşık bir sonuç döndürecektir. log(Complex(x))'i deneyin.
Stacktrace:
[1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]
Base.log2
— Functionlog2(x)
x
için 2 tabanında logaritmayı hesaplar. Negatif Real
argümanlar için DomainError
fırlatır.
Ayrıca bakınız: exp2
, ldexp
, ispow2
.
Örnekler
julia> log2(4)
2.0
julia> log2(10)
3.321928094887362
julia> log2(-2)
HATA: DomainError ile -2.0:
log2 negatif bir gerçek argüman ile çağrıldı ancak yalnızca karmaşık bir argüman ile çağrıldığında karmaşık bir sonuç döndürecektir. log2(Complex(x))'i deneyin.
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
Base.log10
— Functionlog10(x)
x
için 10 tabanında logaritmayı hesaplar. Negatif Real
argümanlar için DomainError
fırlatır.
Örnekler
julia> log10(100)
2.0
julia> log10(2)
0.3010299956639812
julia> log10(-2)
HATA: -2.0 ile DomainError:
log10 negatif bir gerçek argüman ile çağrıldı, ancak yalnızca karmaşık bir argüman ile çağrıldığında karmaşık bir sonuç döndürecektir. log10(Complex(x)) deneyin.
Stacktrace:
[1] throw_complex_domainerror(f::Symbol, x::Float64) at ./math.jl:31
[...]
Base.log1p
— Functionlog1p(x)
1+x
'in doğal logaritmasını doğru bir şekilde hesaplar. Real
argümanları -1'den küçük olduğunda DomainError
fırlatır.
Örnekler
julia> log1p(-0.5)
-0.6931471805599453
julia> log1p(0)
0.0
julia> log1p(-2)
HATA: -2.0 ile DomainError:
log1p, -1'den küçük bir gerçek argüman ile çağrıldı ancak yalnızca karmaşık bir argüman ile çağrıldığında karmaşık bir sonuç döndürecektir. log1p(Complex(x))'i deneyin.
Stacktrace:
[1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]
Base.Math.frexp
— Functionfrexp(val)
x
'in $[1/2, 1)$ veya 0 büyüklüğünde olduğu ve val
'ın $x \times 2^{exp}$'e eşit olduğu (x,exp)
çiftini döndürür.
Ayrıca significand
, exponent
, ldexp
bakınız.
Örnekler
julia> frexp(6.0)
(0.75, 3)
julia> significand(6.0), exponent(6.0) # [1, 2) aralığı yerine
(1.5, 2)
julia> frexp(0.0), frexp(NaN), frexp(-Inf) # üstel bir hata verecektir
((0.0, 0), (NaN, 0), (-Inf, 0))
Base.exp
— Methodexp(x)
x
'in doğal taban üstelini hesaplayın, diğer bir deyişle $ℯ^x$.
Ayrıca bkz. exp2
, exp10
ve cis
.
Örnekler
julia> exp(1.0)
2.718281828459045
julia> exp(im * pi) ≈ cis(pi)
true
Base.exp2
— Functionexp2(x)
x
'in taban 2 üstelini hesaplar, diğer bir deyişle $2^x$.
Örnekler
julia> exp2(5)
32.0
julia> 2^5
32
julia> exp2(63) > typemax(Int)
true
Base.exp10
— Functionexp10(x)
x
'in taban 10 üssünü hesaplar, diğer bir deyişle $10^x$.
Örnekler
julia> exp10(2)
100.0
julia> 10^2
100
Base.Math.ldexp
— FunctionBase.Math.modf
— Functionmodf(x)
Bir sayının kesirli ve tam kısımlarını içeren (fpart, ipart)
demetini döndürür. Her iki kısım da argümanın aynı işaretine sahiptir.
Örnekler
julia> modf(3.5)
(0.5, 3.0)
julia> modf(-3.5)
(-0.5, -3.0)
Base.expm1
— Functionexpm1(x)
Doğru bir şekilde $e^x-1$ hesaplar. Küçük x değerleri için exp(x)-1'in doğrudan değerlendirilmesinde meydana gelen hassasiyet kaybını önler.
Örnekler
julia> expm1(1e-16)
1.0e-16
julia> exp(1e-16) - 1
0.0
Base.round
— Functionround([T,] x, [r::RoundingMode])
round(x, [r::RoundingMode]; digits::Integer=0, base = 10)
round(x, [r::RoundingMode]; sigdigits::Integer, base = 10)
x
sayısını yuvarlar.
Anahtar kelime argümanları olmadan, x
bir tam sayı değerine yuvarlanır ve bir T
türünde veya T
sağlanmadıysa x
ile aynı türde bir değer döner. Eğer değer T
tarafından temsil edilemeyecekse, InexactError
hatası fırlatılacaktır, bu da convert
ile benzerdir.
digits
anahtar kelime argümanı sağlanırsa, belirtilen ondalık basamağı (veya negatifse öncesini) yuvarlar, base
tabanında.
sigdigits
anahtar kelime argümanı sağlanırsa, belirtilen anlamlı basamak sayısına yuvarlar, base
tabanında.
RoundingMode
r
, yuvarlama yönünü kontrol eder; varsayılan RoundNearest
olup, en yakın tam sayıya yuvarlar, 0.5 olan bağlama değerleri en yakın çift tam sayıya yuvarlanır. round
'un küresel yuvarlama modu değişirse yanlış sonuçlar verebileceğini unutmayın (bkz. rounding
).
Bir kayan nokta türüne yuvarlarken, o tür tarafından temsil edilebilen (ve Inf) tam sayılara yuvarlanır, gerçek tam sayılara değil. Inf, "en yakın" belirlemek için floatmax(T)
'den bir ulp daha büyük olarak kabul edilir, bu da convert
ile benzerdir.
Örnekler
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)
İkili kayan nokta sayıları üzerinde çalışırken, 2 dışındaki tabanlarda belirtilen basamaklara yuvarlama kesin olmayabilir. Örneğin, 1.15
değerini temsil eden Float64
aslında 1.15'ten daha küçüktür, ancak 1.2'ye yuvarlanacaktır. Örneğin:
julia> x = 1.15
1.15
julia> big(1.15)
1.149999999999999911182158029987476766109466552734375
julia> x < 115//100
true
julia> round(x, digits=1)
1.2
Uzantılar
round
'u yeni sayısal türlere genişletmek için, genellikle Base.round(x::NewType, r::RoundingMode)
tanımlamak yeterlidir.
Base.Rounding.RoundingMode
— TypeRoundingMode
Bir tür, kayan nokta işlemlerinin yuvarlama modunu kontrol etmek için (rounding
/setrounding
fonksiyonları aracılığıyla) veya en yakın tam sayıya yuvarlama için isteğe bağlı argümanlar olarak (round
fonksiyonu aracılığıyla) kullanılır.
Şu anda desteklenen yuvarlama modları şunlardır:
RoundNearest
(varsayılan)RoundNearestTiesAway
RoundNearestTiesUp
RoundToZero
RoundFromZero
RoundUp
RoundDown
RoundFromZero
, en az Julia 1.9 gerektirir. Önceki sürümler yalnızca BigFloat
'lar için RoundFromZero
'yu destekler.
Base.Rounding.RoundNearest
— ConstantRoundNearest
Varsayılan yuvarlama modu. En yakın tam sayıya yuvarlar; bağlar (0.5 kesirli değerler) en yakın çift tam sayıya yuvarlanır.
Base.Rounding.RoundNearestTiesAway
— ConstantRoundNearestTiesAway
En yakın tam sayıya yuvarlar, sıfırdan uzaklaşarak bağlanan durumlar (C/C++ round
davranışı).
Base.Rounding.RoundNearestTiesUp
— ConstantRoundNearestTiesUp
En yakın tam sayıya yuvarlar, bağlanma durumlarında pozitif sonsuzluğa doğru yuvarlanır (Java/JavaScript round
davranışı).
Base.Rounding.RoundToZero
— ConstantBase.Rounding.RoundFromZero
— ConstantSıfırdan Yuvarlama
Sıfırdan uzaklaştırır.
RoundFromZero
en az Julia 1.9 gerektirir. Önceki sürümler yalnızca BigFloat
'lar için RoundFromZero
'yu destekler.
Örnekler
julia> BigFloat("1.0000000000000001", 5, RoundFromZero)
1.06
Base.Rounding.RoundUp
— ConstantBase.Rounding.RoundDown
— ConstantBase.round
— Methodround(z::Complex[, RoundingModeReal, [RoundingModeImaginary]])
round(z::Complex[, RoundingModeReal, [RoundingModeImaginary]]; digits=0, base=10)
round(z::Complex[, RoundingModeReal, [RoundingModeImaginary]]; sigdigits, base=10)
Kompleks değerli z
için aynı türdeki en yakın tam sayıyı döndürün, belirtilen RoundingMode
kullanarak bağları kırın. İlk RoundingMode
gerçek bileşenleri yuvarlamak için, ikincisi ise hayali bileşenleri yuvarlamak için kullanılır.
RoundingModeReal
ve RoundingModeImaginary
varsayılan olarak RoundNearest
değerini alır; bu, en yakın tam sayıya yuvarlar ve bağlar (0.5'lik kesirli değerler) en yakın çift tam sayıya yuvarlanır.
Örnekler
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
Base.ceil
— Functionceil([T,] x)
ceil(x; digits::Integer= [, base = 10])
ceil(x; sigdigits::Integer= [, base = 10])
ceil(x)
x'in kendisinden büyük veya eşit olan en yakın tam sayı değerini döndürür.
ceil(T, x)
sonucu T
türüne dönüştürür, eğer yuvarlanmış değer T
olarak temsil edilemiyorsa bir InexactError
fırlatır.
digits
, sigdigits
ve base
anahtar kelimeleri round
için olduğu gibi çalışır.
Yeni bir tür için ceil
desteği sağlamak için Base.round(x::NewType, ::RoundingMode{:Up})
tanımlayın.
Base.floor
— Functionfloor([T,] x)
floor(x; digits::Integer= [, base = 10])
floor(x; sigdigits::Integer= [, base = 10])
floor(x)
ifadesi, x
'e eşit veya daha küçük olan x
ile aynı türdeki en yakın tam sayıyı döndürür.
floor(T, x)
sonucu T
türüne dönüştürür, eğer yuvarlanmış değer T
olarak temsil edilemiyorsa bir InexactError
fırlatır.
digits
, sigdigits
ve base
anahtar kelimeleri round
için olduğu gibi çalışır.
Yeni bir tür için floor
desteği sağlamak için, Base.round(x::NewType, ::RoundingMode{:Down})
tanımlayın.
Base.trunc
— Functiontrunc([T,] x)
trunc(x; digits::Integer= [, base = 10])
trunc(x; sigdigits::Integer= [, base = 10])
trunc(x)
x'in mutlak değeri x
'in mutlak değerine eşit veya daha küçük olan aynı türdeki en yakın tam sayıyı döndürür.
trunc(T, x)
sonucu T
türüne dönüştürür, eğer kesilmiş değer T
olarak temsil edilemiyorsa bir InexactError
fırlatır.
digits
, sigdigits
ve base
anahtar kelimeleri round
için olduğu gibi çalışır.
Yeni bir tür için trunc
'u desteklemek için Base.round(x::NewType, ::RoundingMode{:ToZero})
tanımlayın.
Ayrıca bkz: %
, floor
, unsigned
, unsafe_trunc
.
Örnekler
julia> trunc(2.22)
2.0
julia> trunc(-2.22, digits=1)
-2.2
julia> trunc(Int, -2.22)
-2
Base.unsafe_trunc
— Functionunsafe_trunc(T, x)
x
'in mutlak değeri x
'in mutlak değerine eşit veya daha küçük olan T
türünde en yakın tam sayı değerini döndürür. Eğer değer T
tarafından temsil edilemiyorsa, rastgele bir değer döndürülecektir. Ayrıca bkz. trunc
.
Örnekler
julia> unsafe_trunc(Int, -2.2)
-2
julia> unsafe_trunc(Int, NaN)
-9223372036854775808
Base.min
— Functionmin(x, y, ...)
Argümanların en küçüğünü isless
ile karşılaştırarak döndürür. Argümanlardan herhangi biri missing
ise, missing
döner. Bir koleksiyondan en küçük öğeyi almak için minimum
fonksiyonuna da bakın.
Örnekler
julia> min(2, 5, 1)
1
julia> min(4, missing, 6)
missing
Base.max
— Functionmax(x, y, ...)
Argümanların maksimumunu isless
ile karşılaştırarak döndürür. Argümanlardan herhangi biri missing
ise, missing
döner. Bir koleksiyondan maksimum elemanı almak için maximum
fonksiyonuna da bakın.
Örnekler
julia> max(2, 5, 1)
5
julia> max(5, missing, 6)
missing
Base.minmax
— Functionminmax(x, y)
Döndürür (min(x,y), max(x,y))
.
Ayrıca (minimum(x), maximum(x))
döndüren extrema
ile de bakabilirsiniz.
Örnekler
julia> minmax('c','b')
('b', 'c')
Base.clamp
— Functionclamp(x, lo, hi)
lo <= x <= hi
ise x
döner. Eğer x > hi
ise hi
döner. Eğer x < lo
ise lo
döner. Argümanlar ortak bir türe yükseltilir.
İlk argüman olarak missing
kullanmak en az Julia 1.3 gerektirir.
Örnekler
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 olan bir örnek
3-element Vector{Int64}:
6
6
10
clamp(x, T)::T
x
değerini typemin(T)
ve typemax(T)
arasında sınırlayın ve sonucu T
türüne dönüştürün.
Ayrıca bkz. trunc
.
Örnekler
julia> clamp(200, Int8)
127
julia> clamp(-200, Int8)
-128
julia> trunc(Int, 4pi^2)
39
clamp(x::Integer, r::AbstractUnitRange)
x
değerini r
aralığında sınırlayın.
Bu yöntem en az Julia 1.6 gerektirir.
Base.clamp!
— Functionclamp!(array::AbstractArray, lo, hi)
array
içindeki değerleri belirtilen aralıkla sınırlayın, yerinde. Ayrıca bkz. clamp
.
array
içindeki missing
girişleri en az Julia 1.3 gerektirir.
Örnekler
julia> row = collect(-4:4)';
julia> clamp!(row, 0, Inf)
1×9 adjoint(::Vector{Int64}) ile 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
Base.abs
— Functionabs(x)
x
'in mutlak değeri.
abs
işlevi işaretli tam sayılara uygulandığında, taşma meydana gelebilir ve bu da negatif bir değerin döndürülmesine neden olabilir. Bu taşma, yalnızca abs
işlevi işaretli bir tam sayının temsil edilebilen en küçük değerine uygulandığında gerçekleşir. Yani, x == typemin(typeof(x))
olduğunda, abs(x) == x < 0
olur, beklenildiği gibi -x
değil.
Ayrıca bakınız: abs2
, unsigned
, sign
.
Örnekler
julia> abs(-3)
3
julia> abs(1 + im)
1.4142135623730951
julia> abs.(Int8[-128 -127 -126 0 126 127]) # typemin(Int8) üzerinde taşma
1×6 Matrix{Int8}:
-128 127 126 0 126 127
julia> maximum(abs, [1, -2, 3, -4])
4
Base.Checked
— ModuleKontrol Edildi
Kontrol Edildi modülü, taşma meydana geldiğinde hata fırlatan yerleşik işaretli ve işaretsiz Tam sayı türleri için aritmetik fonksiyonlar sağlar. checked_sub
, checked_div
gibi adlandırılmışlardır. Ayrıca, add_with_overflow
, sub_with_overflow
, mul_with_overflow
hem kontrolsüz sonuçları hem de bir taşmanın varlığını belirten bir boolean değeri döndürür.
Base.Checked.checked_abs
— FunctionBase.checked_abs(x)
abs(x)
değerini hesaplar, uygun yerlerde taşma hatalarını kontrol eder. Örneğin, standart iki'nin tamamlayanı işaretli tam sayılar (örneğin Int
), abs(typemin(Int))
değerini temsil edemez, bu da bir taşmaya yol açar.
Taşma koruması, algılanabilir bir performans cezası getirebilir.
Base.Checked.checked_neg
— FunctionBase.checked_neg(x)
-x
hesaplar, uygun yerlerde taşma hatalarını kontrol eder. Örneğin, standart iki'nin tamamlayanı işaretli tam sayılar (örneğin Int
) -typemin(Int)
değerini temsil edemez, bu da bir taşmaya yol açar.
Taşma koruması, algılanabilir bir performans cezası getirebilir.
Base.Checked.checked_add
— FunctionBase.checked_add(x, y)
x+y
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_sub
— FunctionBase.checked_sub(x, y)
x-y
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_mul
— FunctionBase.checked_mul(x, y)
x*y
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_div
— FunctionBase.checked_div(x, y)
div(x,y)
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_rem
— FunctionBase.checked_rem(x, y)
x%y
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_fld
— FunctionBase.checked_fld(x, y)
fld(x,y)
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_mod
— FunctionBase.checked_mod(x, y)
mod(x,y)
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_cld
— FunctionBase.checked_cld(x, y)
cld(x,y)
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.checked_pow
— FunctionBase.checked_pow(x, y)
^(x,y)
hesaplar, uygun yerlerde taşma hatalarını kontrol eder.
Taşma koruması, algılanabilir bir performans cezası uygulayabilir.
Base.Checked.add_with_overflow
— FunctionBase.add_with_overflow(x, y) -> (r, f)
r = x+y
hesaplar, f
ise taşmanın olup olmadığını gösterir.
Base.Checked.sub_with_overflow
— FunctionBase.sub_with_overflow(x, y) -> (r, f)
r = x-y
hesaplar, f
ise taşmanın olup olmadığını gösterir.
Base.Checked.mul_with_overflow
— FunctionBase.mul_with_overflow(x, y) -> (r, f)
r = x*y
hesaplanır, f
ise taşmanın olup olmadığını gösterir.
Base.abs2
— Functionabs2(x)
x
'in kare mutlak değeri.
Bu, özellikle abs(x)
'in bir karekök gerektirdiği karmaşık sayılar için abs(x)^2
'den daha hızlı olabilir, hypot
aracılığıyla.
Örnekler
julia> abs2(-3)
9
julia> abs2(3.0 + 4.0im)
25.0
julia> sum(abs2, [1+2im, 3+4im]) # LinearAlgebra.norm(x)^2
30
Base.copysign
— Functioncopysign(x, y) -> z
z
'yi x
'in büyüklüğüne ve y
'nin aynı işaretine sahip olacak şekilde döndürün.
Örnekler
julia> copysign(1, -2)
-1
julia> copysign(-1, 2)
1
Base.sign
— Functionsign(x)
x==0
ise sıfır döndür ve aksi takdirde $x/|x|$ (yani, reel x
için ±1) döndür.
Ayrıca bkz. signbit
, zero
, copysign
, flipsign
.
Örnekler
julia> sign(-4.0)
-1.0
julia> sign(99)
1
julia> sign(-0.0)
-0.0
julia> sign(0 + im)
0.0 + 1.0im
Base.signbit
— Functionsignbit(x)
x
değerinin işaretinin negatif olup olmadığını kontrol eder, eğer negatifse true
, aksi takdirde false
döner.
Örnekler
julia> signbit(-4)
true
julia> signbit(5)
false
julia> signbit(5.5)
false
julia> signbit(-4.1)
true
Base.flipsign
— Functionflipsign(x, y)
y
negatifse x
'in işaretini tersine çevirir. Örneğin abs(x) = flipsign(x,x)
.
Örnekler
julia> flipsign(5, 3)
5
julia> flipsign(5, -3)
-5
Base.sqrt
— Method√(x)
Sonuç $\sqrt{x}$.
Negatif Real
argümanlar için DomainError
fırlatır. Bunun yerine karmaşık negatif argümanlar kullanın. sqrt
'ın negatif reel eksen boyunca bir dal kesimi olduğunu unutmayın.
Önek operatör √
, sqrt
ile eşdeğerdir.
Ayrıca bkz: hypot
.
Örnekler
julia> sqrt(big(81))
9.0
julia> sqrt(big(-81))
HATA: -81.0 ile DomainError:
NaN girişi için NaN olmayan sonuç.
Stacktrace:
[1] sqrt(::BigFloat) at ./mpfr.jl:501
[...]
julia> sqrt(big(complex(-81)))
0.0 + 9.0im
julia> sqrt(-81 - 0.0im) # -0.0im dal kesiminin altında
0.0 - 9.0im
julia> .√(1:4)
4-element Vector{Float64}:
1.0
1.4142135623730951
1.7320508075688772
2.0
Base.isqrt
— Functionisqrt(n::Integer)
Tam sayı karekökü: m*m <= n
koşulunu sağlayan en büyük tam sayı m
.
julia> isqrt(5)
2
Base.Math.cbrt
— Methodcbrt(x::Gerçek)
x
'in küp kökünü döndürür, yani $x^{1/3}$. Negatif değerler kabul edilir (eğer $x < 0$ ise negatif gerçek kökü döndürür).
Önek operatör ∛
, cbrt
ile eşdeğerdir.
Örnekler
julia> cbrt(big(27))
3.0
julia> cbrt(big(-27))
-3.0
Base.real
— Functionreal(z)
Karmaşık sayı z
'nin reel kısmını döndürür.
Ayrıca bakınız: imag
, reim
, complex
, isreal
, Real
.
Örnekler
julia> real(1 + 3im)
1
real(T::Type)
Bir T
türündeki bir değerin reel kısmını temsil eden türü döndürür. Örneğin: T == Complex{R}
için R
döner. typeof(real(zero(T)))
ile eşdeğerdir.
Örnekler
julia> real(Complex{Int})
Int64
julia> real(Float64)
Float64
real(A::AbstractArray)
Dizi A
'deki her bir elemanın reel kısmını içeren bir dizi döndürür.
real.(A)
ile eşdeğerdir, ancak eltype(A) <: Real
olduğunda A
kopyalanmadan döndürülür ve A
sıfır boyutlu olduğunda bir skalar yerine 0-boyutlu bir dizi döndürülür.
Örnekler
julia> real([1, 2im, 3 + 4im])
3-element Vector{Int64}:
1
0
3
julia> real(fill(2 - im))
0-boyutlu Array{Int64, 0}:
2
Base.imag
— Functionimag(z)
Karmaşık sayı z
'nin hayali kısmını döndürür.
Ayrıca bakınız: conj
, reim
, adjoint
, angle
.
Örnekler
julia> imag(1 + 3im)
3
imag(A::AbstractArray)
Dizi A
'deki her bir elemanın hayali kısmını içeren bir dizi döndürür.
imag.(A)
ile eşdeğerdir, ancak A
sıfır boyutlu olduğunda, bir skalar yerine 0-boyutlu bir dizi döndürülür.
Örnekler
julia> imag([1, 2im, 3 + 4im])
3-element Vector{Int64}:
0
2
4
julia> imag(fill(2 - im))
0-boyutlu Array{Int64, 0}:
-1
Base.reim
— Functionreim(z)
Karmaşık sayı z
'nin reel ve sanal kısımlarını içeren bir demet döndürür.
Örnekler
julia> reim(1 + 3im)
(1, 3)
reim(A::AbstractArray)
Her bir girişin gerçek ve hayali kısmını içeren iki diziden oluşan bir demet döndürür A
.
(real.(A), imag.(A))
ile eşdeğerdir, ancak eltype(A) <: Real
olduğunda A
gerçek kısmı temsil etmek için kopyalanmadan döndürülür ve A
sıfır boyutlu olduğunda, bir skalar yerine 0-boyutlu bir dizi döndürülür.
Örnekler
julia> reim([1, 2im, 3 + 4im])
([1, 0, 3], [0, 2, 4])
julia> reim(fill(2 - im))
(fill(2), fill(-1))
Base.conj
— Functionconj(z)
Bir karmaşık sayı z
'nin karmaşık eşleniğini hesaplar.
Ayrıca bakınız: angle
, adjoint
.
Örnekler
julia> conj(1 + 3im)
1 - 3im
conj(A::AbstractArray)
Dizi A
'deki her bir elemanın karmaşık eşleniğini içeren bir dizi döndürür.
conj.(A)
ile eşdeğerdir, ancak eltype(A) <: Real
olduğunda A
kopyalanmadan döndürülür ve A
sıfır boyutlu olduğunda bir skalar yerine 0-boyutlu bir dizi döndürülür.
Örnekler
julia> conj([1, 2im, 3 + 4im])
3-element Vector{Complex{Int64}}:
1 + 0im
0 - 2im
3 - 4im
julia> conj(fill(2 - im))
0-boyutlu Array{Complex{Int64}, 0}:
2 + 1im
Base.angle
— Functionangle(z)
Bir karmaşık sayı z
'nin radyan cinsinden faz açısını hesaplar.
-pi ≤ angle(z) ≤ pi
aralığında bir sayı döndürür ve bu nedenle negatif reel eksen boyunca kesintilidir.
Ayrıca bakınız: atan
, cis
, rad2deg
.
Örnekler
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
Base.cis
— Functioncis(x)
Euler formülünü kullanarak exp(im*x)
için daha verimli bir yöntem: $\cos(x) + i \sin(x) = \exp(i x)$.
Ayrıca bkz. cispi
, sincos
, exp
, angle
.
Örnekler
julia> cis(π) ≈ -1
true
Base.cispi
— Functioncispi(x)
cis(pi*x)
için daha doğru bir yöntem (özellikle büyük x
için).
Ayrıca bkz. cis
, sincospi
, exp
, angle
.
Örnekler
julia> cispi(10000)
1.0 + 0.0im
julia> cispi(0.25 + 1im)
0.030556854645954562 + 0.03055685464595456im
Bu fonksiyon Julia 1.6 veya daha yenisini gerektirir.
Base.binomial
— Functionbinomial(n::Integer, k::Integer)
binom katsayısı $\binom{n}{k}$, $(1+x)^n$ polinom genişlemesindeki $k$'inci terimin katsayısıdır.
Eğer $n$ negatif değilse, o zaman k
'yı n
öğesinden seçmenin yollarının sayısıdır:
\[\binom{n}{k} = \frac{n!}{k! (n-k)!}\]
burada $n!$ factorial
fonksiyonudur.
Eğer $n$ negatifse, o zaman tanım şu kimlik ile yapılır:
\[\binom{n}{k} = (-1)^k \binom{k-n-1}{k}\]
Ayrıca bkz. factorial
.
Örnekler
julia> binomial(5, 3)
10
julia> factorial(5) ÷ (factorial(5-3) * factorial(3))
10
julia> binomial(-5, 3)
-35
Dış bağlantılar
- Binom katsayısı Wikipedia'da.
```
binom(x::Number, k::Integer)
Genelleştirilmiş binom katsayısı, k ≥ 0
için aşağıdaki polinom ile tanımlanır
\[\frac{1}{k!} \prod_{j=0}^{k-1} (x - j)\]
k < 0
olduğunda sıfır döner.
Tam sayı x
durumu için bu, sıradan tam sayı binom katsayısına eşdeğerdir
\[\binom{n}{k} = \frac{n!}{k! (n-k)!}\]
Tam olmayan k
için daha fazla genelleme matematiksel olarak mümkündür, ancak Gamma fonksiyonu ve/veya beta fonksiyonu içerir; bu fonksiyonlar Julia standart kütüphanesinde sağlanmamaktadır, ancak SpecialFunctions.jl gibi harici paketlerde mevcuttur.
Harici bağlantılar
- Binom katsayısı Vikipedi'de.
Base.factorial
— Functionfactorial(n::Integer)
n
'nin faktöriyeli. Eğer n
bir Integer
ise, faktöriyel en az 64 bit'e yükseltilmiş bir tam sayı olarak hesaplanır. n
küçük değilse bu taşma yapabilir, ancak sonucu tam olarak hesaplamak için factorial(big(n))
kullanabilirsiniz.
Ayrıca binomial
ile de bakabilirsiniz.
Örnekler
julia> factorial(6)
720
julia> factorial(21)
HATA: OverflowError: 21, tabloda bakmak için çok büyük; bunun yerine `factorial(big(21))` kullanmayı düşünün
Stacktrace:
[...]
julia> factorial(big(21))
51090942171709440000
Dış bağlantılar
- Faktöriyel Wikipedia'da.
```
Base.gcd
— Functiongcd(x, y...)
En büyük ortak (pozitif) bölen (veya tüm argümanlar sıfırsa sıfır). Argümanlar tam sayılar ve rasyonel sayılar olabilir.
Rasyonel argümanlar Julia 1.4 veya daha yenisini gerektirir.
Örnekler
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
Base.lcm
— Functionlcm(x, y...)
En küçük (pozitif) çarpan (veya herhangi bir argüman sıfırsa sıfır). Argümanlar tam sayılar ve rasyonel sayılar olabilir.
Rasyonel argümanlar Julia 1.4 veya daha yenisini gerektirir.
Örnekler
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
Base.gcdx
— Functiongcdx(a, b)
a
ve b
'nin en büyük ortak (pozitif) bölenini ve Bézout katsayılarını, yani $ua+vb = d = gcd(a, b)$ eşitliğini sağlayan tam sayı katsayıları u
ve v
'yi hesaplar. gcdx(a, b)
$(d, u, v)$ döner.
Argümanlar tam sayılar ve rasyonel sayılar olabilir.
Rasyonel argümanlar Julia 1.4 veya daha yenisini gerektirir.
Örnekler
julia> gcdx(12, 42)
(6, -3, 1)
julia> gcdx(240, 46)
(2, -9, 47)
Bézout katsayıları benzersiz olarak tanımlanmamıştır. gcdx
, genişletilmiş Öklid algoritmasıyla hesaplanan minimal Bézout katsayılarını döner. (Ref: D. Knuth, TAoCP, 2/e, s. 325, Algoritma X.) İşaretli tam sayılar için, bu katsayılar u
ve v
, $|u| < |b/d|$ ve $|v| < |a/d|$ anlamında minimaldir. Ayrıca, d
pozitif olacak şekilde u
ve v
'nin işaretleri seçilir. İşaretsiz tam sayılar için, katsayılar u
ve v
typemax
'lerine yakın olabilir ve bu durumda kimlik yalnızca işaretsiz tam sayıların modüler aritmetiği aracılığıyla geçerlidir.
Base.ispow2
— Functionispow2(n::Number) -> Bool
n
'nin bir tam sayı iki kuvveti olup olmadığını test eder.
Ayrıca bkz. count_ones
, prevpow
, nextpow
.
Örnekler
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'da Integer
olmayan argümanlar için destek eklendi.
Base.nextpow
— Functionnextpow(a, x)
x
'ten küçük olmayan en küçük a^n
, burada n
pozitif bir tam sayıdır. a
1'den büyük olmalı ve x
0'dan büyük olmalıdır.
Ayrıca prevpow
bakınız.
Örnekler
julia> nextpow(2, 7)
8
julia> nextpow(2, 9)
16
julia> nextpow(5, 20)
25
julia> nextpow(4, 16)
16
Base.prevpow
— Functionprevpow(a, x)
x
'den büyük olmayan en büyük a^n
, burada n
sıfır veya pozitif bir tam sayıdır. a
1'den büyük olmalı ve x
1'den küçük olmamalıdır.
Örnekler
julia> prevpow(2, 7)
4
julia> prevpow(2, 9)
8
julia> prevpow(5, 20)
5
julia> prevpow(4, 16)
16
Base.nextprod
— Functionnextprod(factors::Union{Tuple,AbstractVector}, n)
n
'ye eşit veya daha büyük olan ve factors
içindeki faktörler için $k_i^{p_i}$ şeklinde yazılabilen en küçük tam sayı.
Örnekler
julia> nextprod((2, 3), 105)
108
julia> 2^2 * 3^3
108
Bir tuple kabul eden yöntem, Julia 1.6 veya daha yenisini gerektirir.
Base.invmod
— Functioninvmod(n::Integer, m::Integer)
m
modülünde n
'nin tersini alır: $n y = 1 \pmod m$ olacak şekilde y
, ve $div(y,m) = 0$. Bu, $m = 0$ olduğunda veya $gcd(n,m) \neq 1$ olduğunda bir hata fırlatır.
Örnekler
julia> invmod(2, 5)
3
julia> invmod(2, 3)
2
julia> invmod(5, 6)
5
invmod(n::Integer, T) where {T <: Base.BitInteger}
invmod(n::T) where {T <: Base.BitInteger}
n
'nin modüler tersini T
türündeki tam sayı halkasında hesaplar, yani 2^N
modunda, burada N = 8*sizeof(T)
(örneğin N = 32
için Int32
). Başka bir deyişle, bu yöntemler aşağıdaki kimlikleri sağlar:
n * invmod(n) == 1
(n * invmod(n, T)) % T == 1
(n % T) * invmod(n, T) == 1
Burada *
modüler çarpma anlamına gelir, T
tam sayı halkasında.
Bir tam sayı türü tarafından ima edilen modülü açık bir değer olarak belirtmek genellikle elverişsizdir çünkü modül tanım gereği tür tarafından temsil edilemeyecek kadar büyüktür.
Modüler ters, genel duruma göre çok daha verimli bir şekilde, https://arxiv.org/pdf/2204.04342.pdf adresinde açıklanan algoritma kullanılarak hesaplanır.
invmod(n)
ve invmod(n, T)
yöntemleri Julia 1.11 veya daha yenisini gerektirir.
Base.powermod
— Functionpowermod(x::Integer, p::Integer, m)
\[x^p \pmod m\]
hesaplar.
Örnekler
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
Base.ndigits
— Functionndigits(n::Integer; base::Integer=10, pad::Integer=1)
Tam sayısı n
'nin base
tabanında yazıldığında kaç basamak olduğunu hesaplar (base
değeri [-1, 0, 1]
içinde olmamalıdır), isteğe bağlı olarak belirtilen boyuta sıfırlarla doldurulabilir (sonuç asla pad
'den az olmayacaktır).
Ayrıca digits
, count_ones
bakınız.
Örnekler
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
Base.add_sum
— FunctionBase.add_sum(x, y)
sum
içinde kullanılan azaltma operatörü. +
ile ana fark, küçük tam sayıların Int
/UInt
'ye yükseltilmesidir.
Base.widemul
— Functionwidemul(x, y)
x
ve y
'yi çarpar, sonucu daha büyük bir türde verir.
Ayrıca bkz. promote
, Base.add_sum
.
Örnekler
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
Base.Math.evalpoly
— Functionevalpoly(x, p)
Polinomun $\sum_k x^{k-1} p[k]$ değerini hesaplar; yani, katsayılar p[1]
, p[2]
, ... şeklinde x
'in kuvvetine göre artan sırada verilmiştir. Katsayıların sayısı statik olarak biliniyorsa, yani p
bir Tuple
ise döngüler derleme zamanında açılır. Bu fonksiyon, x
gerçekse Horner yöntemi kullanarak verimli kod üretir veya x
karmaşık ise Goertzel benzeri [DK62] algoritmasını kullanır.
Bu fonksiyon Julia 1.4 veya daha yenisini gerektirir.
Örnekler
julia> evalpoly(2, (1, 2, 3))
17
Base.Math.@evalpoly
— Macro@evalpoly(z, c...)
Polinomun $\sum_k z^{k-1} c[k]$ değerini c[1]
, c[2]
, ... için hesaplar; yani, katsayılar z
'nin kuvvetine göre artan sırada verilmiştir. Bu makro, ya Horner yöntemi ya da karmaşık z
için daha verimli bir Goertzel benzeri algoritma kullanan verimli satır içi koda genişler.
Ayrıca evalpoly
bakınız.
Örnekler
julia> @evalpoly(3, 1, 0, 1)
10
julia> @evalpoly(2, 1, 0, 1)
5
julia> @evalpoly(2, 1, 1, 1)
7
Base.FastMath.@fastmath
— Macro@fastmath expr
Dönüştürülmüş bir ifadenin yürütülmesini sağlar; bu, katı IEEE semantiğini ihlal edebilecek işlevleri çağırır. Bu, mümkün olan en hızlı işlemi sağlar, ancak sonuçlar belirsizdir – bunu yaparken dikkatli olun, çünkü sayısal sonuçları değiştirebilir.
Bu, LLVM Fast-Math bayraklarını ayarlar ve clang'daki -ffast-math
seçeneğine karşılık gelir. Daha fazla ayrıntı için performans notları bölümüne bakın.
Örnekler
julia> @fastmath 1+2
3
julia> @fastmath(sin(3))
0.1411200080598672
Customizable binary operators
Bazı unicode karakterleri, infiks notasyonu destekleyen yeni ikili operatörler tanımlamak için kullanılabilir. Örneğin ⊗(x,y) = kron(x,y)
ifadesi ⊗
(otimes) fonksiyonunu Kronecker çarpımı olarak tanımlar ve bunu infiks sözdizimi kullanarak ikili operatör olarak çağırmak mümkündür: C = A ⊗ B
ve ayrıca alışılmış ön ek sözdizimi ile C = ⊗(A,B)
şeklinde de çağrılabilir.
Diğer karakterler, bu tür uzantıları destekleyen \odot ⊙
ve \oplus ⊕
içerir.
Tamam liste, ayrıştırıcı kodunda: https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm
*
(öncelik açısından) gibi ayrıştırılanlar şunlardır: * / ÷ % & ⋅ ∘ × |\\| ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇ ⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻ ⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗
ve +
gibi ayrıştırılanlar şunlardır: + - |\|| ⊕ ⊖ ⊞ ⊟ |++| ∪ ∨ ⊔ ± ∓ ∔ ∸ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⟇ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦ ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣
Oklar, karşılaştırmalar ve kuvvetlerle ilgili daha birçok başka sembol vardır.
- DK62Donald Knuth, Art of Computer Programming, Volume 2: Seminumerical Algorithms, Sec. 4.6.4.