Mathematics
Mathematical Operators
Base.:- — Method-(x)Unärer Minusoperator.
Beispiele
julia> -1
-1
julia> -(2)
-2
julia> -[1 2; 3 4]
2×2 Matrix{Int64}:
-1 -2
-3 -4
julia> -(true) # wird zu Int befördert
-1
julia> -(0x003)
0xfffdBase.:+ — Functiondt::Date + t::Time -> DateTimeDie Addition eines Date mit einem Time ergibt ein DateTime. Die Stunden-, Minuten-, Sekunden- und Millisekundenanteile des Time werden zusammen mit dem Jahr, Monat und Tag des Date verwendet, um das neue DateTime zu erstellen. Nicht-null Mikrosekunden oder Nanosekunden im Time-Typ führen zu einem InexactError.
+(x, y...)Addition Operator.
Infix x+y+z+... ruft diese Funktion mit allen Argumenten auf, d.h. +(x, y, z, ...), die standardmäßig dann (x+y) + z + ... von links nach rechts aufruft.
Beachten Sie, dass Überlauf für die meisten Ganzzahltypen, einschließlich des Standardtyps Int, möglich ist, wenn große Zahlen addiert werden.
Beispiele
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
trueBase.:- — Method-(x, y)Subtraktionsoperator.
Beispiele
julia> 2 - 3
-1
julia> -(2, 4.5)
-2.5Base.:* — Method*(x, y...)Multiplikationsoperator.
Infix x*y*z*... ruft diese Funktion mit allen Argumenten auf, d.h. *(x, y, z, ...), die standardmäßig dann (x*y) * z * ... von links aus aufruft.
Juxtaposition wie 2pi ruft ebenfalls *(2, pi) auf. Beachten Sie, dass diese Operation eine höhere Priorität hat als ein literales *. Beachten Sie auch, dass die Juxtaposition "0x..." (ganzzahlig null mal eine Variable, deren Name mit x beginnt) verboten ist, da sie mit nicht signierten Ganzzahl-Literalen in Konflikt steht: 0x01 isa UInt8.
Beachten Sie, dass Überlauf für die meisten Ganzzahltypen, einschließlich des Standardtyps Int, beim Multiplizieren großer Zahlen möglich ist.
Beispiele
julia> 2 * 7 * 8
112
julia> *(2, 7, 8)
112
julia> [2 0; 0 3] * [1, 10] # Matrix * Vektor
2-element Vector{Int64}:
2
30
julia> 1/2pi, 1/2*pi # Juxtaposition hat höhere Priorität
(0.15915494309189535, 1.5707963267948966)
julia> x = [1, 2]; x'x # adjungierter Vektor * Vektor
5Base.:/ — Function/(x, y)Rechter Divisionsoperator: Multiplikation von x mit dem Inversen von y auf der rechten Seite.
Gibt Fließkommaergebnisse für ganzzahlige Argumente zurück. Siehe ÷ für ganzzahlige Division oder // für Rational Ergebnisse.
Beispiele
julia> 1/2
0.5
julia> 4/2
2.0
julia> 4.5/2
2.25A / BMatrix-Rechtsdivision: A / B ist äquivalent zu (B' \ A')', wobei \ der Linksdivisionsoperator ist. Für quadratische Matrizen ist das Ergebnis X so, dass A == X*B.
Siehe auch: rdiv!.
Beispiele
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))
trueBase.:\ — Method\(x, y)Linker-Operator: Multiplikation von y mit der Inversen von x von links. Gibt Fließkommaergebnisse für ganzzahlige Argumente zurück.
Beispiele
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.0Base.:^ — Method^(x, y)Exponentiationsoperator.
Wenn x und y Ganzzahlen sind, kann das Ergebnis überlaufen. Um Zahlen in wissenschaftlicher Notation einzugeben, verwenden Sie Float64 Literale wie 1.2e3 anstelle von 1.2 * 10^3.
Wenn y ein Int Literal ist (z. B. 2 in x^2 oder -3 in x^-3), wird der Julia-Code x^y vom Compiler in Base.literal_pow(^, x, Val(y)) umgewandelt, um eine Spezialisierung zur Kompilierzeit auf den Wert des Exponenten zu ermöglichen. (Als Standardfallback haben wir Base.literal_pow(^, x, Val(y)) = ^(x,y), wobei normalerweise ^ == Base.^ gilt, es sei denn, ^ wurde im aufrufenden Namensraum definiert.) Wenn y ein negatives ganzzahliges Literal ist, transformiert Base.literal_pow die Operation standardmäßig in inv(x)^-y, wobei -y positiv ist.
Beispiele
julia> 3^5
243
julia> 3^-1 # verwendet Base.literal_pow
0.3333333333333333
julia> p = -1;
julia> 3^p
ERROR: DomainError mit -1:
Kann eine Ganzzahl x nicht auf eine negative Potenz -1 heben.
[...]
julia> 3.0^p
0.3333333333333333
julia> 10^19 > 0 # Ganzzahlüberlauf
false
julia> big(10)^19 == 1e19
trueBase.fma — Functionfma(x, y, z)Berechnet x*y+z ohne das Zwischenergebnis x*y zu runden. Auf einigen Systemen ist dies erheblich teurer als x*y+z. fma wird verwendet, um die Genauigkeit in bestimmten Algorithmen zu verbessern. Siehe muladd.
Base.muladd — Functionmuladd(x, y, z)Kombinierte Multiplikation-Addition: berechnet x*y+z, erlaubt jedoch, dass die Addition und Multiplikation mit einander oder mit umgebenden Operationen zur Leistungssteigerung zusammengeführt werden. Zum Beispiel kann dies als fma implementiert werden, wenn die Hardware dies effizient unterstützt. Das Ergebnis kann auf verschiedenen Maschinen unterschiedlich sein und kann auch auf derselben Maschine aufgrund von Konstantenpropagation oder anderen Optimierungen unterschiedlich sein. Siehe fma.
Beispiele
julia> muladd(3, 2, 1)
7
julia> 3 * 2 + 1
7muladd(A, y, z)Kombinierte Multiplikation-Addition, A*y .+ z, für Matrix-Matrix- oder Matrix-Vektor-Multiplikation. Das Ergebnis hat immer die gleiche Größe wie A*y, aber z kann kleiner oder ein Skalar sein.
Diese Methoden erfordern Julia 1.6 oder später.
Beispiele
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.0Base.inv — Methodinv(x)Gibt das multiplikative Inverse von x zurück, so dass x*inv(x) oder inv(x)*x one(x) (die multiplikative Identität) bis auf Rundungsfehler ergibt.
Wenn x eine Zahl ist, ist dies im Wesentlichen dasselbe wie one(x)/x, aber für einige Typen kann inv(x) etwas effizienter sein.
Beispiele
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//2inv(::Missing) erfordert mindestens Julia 1.2.
Base.div — Functiondiv(x, y)
÷(x, y)Der Quotient aus der euklidischen (ganzzahligen) Division. Allgemein äquivalent zu einer mathematischen Operation x/y ohne einen Bruchteil.
Siehe auch: cld, fld, rem, divrem.
Beispiele
julia> 9 ÷ 4
2
julia> -5 ÷ 3
-1
julia> 5.0 ÷ 2
2.0
julia> div.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) mit eltype Int64:
-1 -1 -1 0 0 0 0 0 1 1 1Base.div — Methoddiv(x, y, r::RoundingMode=RoundToZero)Der Quotient aus der euklidischen (ganzzahligen) Division. Berechnet x / y, gerundet auf eine ganze Zahl gemäß dem Rundungsmodus r. Mit anderen Worten, die Größe
round(x / y, r)ohne Zwischenrundung.
Die Methode mit drei Argumenten, die einen RoundingMode verwendet, erfordert Julia 1.4 oder höher.
Siehe auch fld und cld, die spezielle Fälle dieser Funktion sind.
RoundFromZero erfordert mindestens Julia 1.9.
Beispiele:
julia> div(4, 3, RoundToZero) # Entspricht div(4, 3)
1
julia> div(4, 3, RoundDown) # Entspricht fld(4, 3)
1
julia> div(4, 3, RoundUp) # Entspricht 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)
-2Base.fld — Functionfld(x, y)Größte ganze Zahl, die kleiner oder gleich x / y ist. Entspricht div(x, y, RoundDown).
Beispiele
julia> fld(7.3, 5.5)
1.0
julia> fld.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) mit eltype Int64:
-2 -2 -1 -1 -1 0 0 0 1 1 1Da fld(x, y) eine streng korrekte Abrundung basierend auf dem wahren Wert von Fließkommazahlen implementiert, können unintuitive Situationen auftreten. Zum Beispiel:
julia> fld(6.0, 0.1)
59.0
julia> 6.0 / 0.1
60.0
julia> 6.0 / big(0.1)
59.99999999999999666933092612453056361837965690217069245739573412231113406246995Was hier passiert, ist, dass der wahre Wert der Fließkommazahl, die als 0.1 geschrieben ist, leicht größer ist als der numerische Wert 1/10, während 6.0 die Zahl 6 genau darstellt. Daher ist der wahre Wert von 6.0 / 0.1 leicht kleiner als 60. Bei der Division wird dies genau auf 60.0 gerundet, aber fld(6.0, 0.1) nimmt immer die Abrundung des wahren Wertes, sodass das Ergebnis 59.0 ist.
Base.cld — Functioncld(x, y)Kleinste ganze Zahl, die größer oder gleich x / y ist. Entspricht div(x, y, RoundUp).
Beispiele
julia> cld(5.5, 2.2)
3.0
julia> cld.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) mit eltype Int64:
-1 -1 -1 0 0 0 1 1 1 2 2Base.mod — Functionmod(x::Integer, r::AbstractUnitRange)Finde y im Bereich r, so dass $x ≡ y (mod n)$, wobei n = length(r), d.h. y = mod(x - first(r), n) + first(r).
Siehe auch mod1.
Beispiele
julia> mod(0, Base.OneTo(3)) # mod1(0, 3)
3
julia> mod(3, 0:2) # mod(3, 3)
0Diese Methode erfordert mindestens Julia 1.3.
mod(x, y)
rem(x, y, RoundDown)Die Reduktion von x modulo y, oder äquivalent, der Rest von x nach ganzzahliger Division durch y, d.h. x - y*fld(x,y), wenn ohne Zwischenrundung berechnet.
Das Ergebnis hat das gleiche Vorzeichen wie y und eine Größe, die kleiner ist als abs(y) (mit einigen Ausnahmen, siehe Hinweis unten).
!!! Hinweis Wenn mit Fließkommawerten verwendet, kann das exakte Ergebnis möglicherweise nicht durch den Typ dargestellt werden, und es kann daher zu Rundungsfehlern kommen. Insbesondere, wenn das exakte Ergebnis sehr nahe an y liegt, kann es auf y gerundet werden.
Siehe auch: 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}) mit eltype Int64:
1 2 0 1 2 0 1 2 0 1 2rem(x::Integer, T::Type{<:Integer}) -> T
mod(x::Integer, T::Type{<:Integer}) -> T
%(x::Integer, T::Type{<:Integer}) -> TFinde y::T, so dass x ≡ y (mod n), wobei n die Anzahl der in T darstellbaren Ganzzahlen ist und y eine Ganzzahl in [typemin(T),typemax(T)] ist. Wenn T jede Ganzzahl darstellen kann (z. B. T == BigInt), entspricht diese Operation einer Umwandlung in T.
Beispiele
julia> x = 129 % Int8
-127
julia> typeof(x)
Int8
julia> x = 129 % BigInt
129
julia> typeof(x)
BigIntBase.rem — Functionrem(x, y)
%(x, y)Rest von der euklidischen Division, der einen Wert mit dem gleichen Vorzeichen wie x zurückgibt und in der Größe kleiner als y ist. Dieser Wert ist immer genau.
Siehe auch: div, mod, mod1, divrem.
Beispiele
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}) mit eltype Int64:
-2 -1 0 -2 -1 0 1 2 0 1 2Base.rem — Methodrem(x, y, r::RoundingMode=RoundToZero)Berechne den Rest von x nach der ganzzahligen Division durch y, wobei der Quotient gemäß dem Rundungsmodus r gerundet wird. Mit anderen Worten, die Größe
x - y * round(x / y, r)ohne Zwischenrundung.
- wenn
r == RoundNearest, dann ist das Ergebnis genau und im Intervall $[-|y| / 2, |y| / 2]$. Siehe auchRoundNearest. - wenn
r == RoundToZero(Standard), dann ist das Ergebnis genau und im Intervall $[0, |y|)$, wennxpositiv ist, oder $(-|y|, 0]$ andernfalls. Siehe auchRoundToZero. - wenn
r == RoundDown, dann liegt das Ergebnis im Intervall $[0, y)$, wennypositiv ist, oder $(y, 0]$ andernfalls. Das Ergebnis kann ungenau sein, wennxundyunterschiedliche Vorzeichen haben undabs(x) < abs(y). Siehe auchRoundDown. - wenn
r == RoundUp, dann liegt das Ergebnis im Intervall $(-y, 0]$, wennypositiv ist, oder $[0, -y)$ andernfalls. Das Ergebnis kann ungenau sein, wennxundydasselbe Vorzeichen haben undabs(x) < abs(y). Siehe auchRoundUp. - wenn
r == RoundFromZero, dann liegt das Ergebnis im Intervall $(-y, 0]$, wennypositiv ist, oder $[0, -y)$ andernfalls. Das Ergebnis kann ungenau sein, wennxundydasselbe Vorzeichen haben undabs(x) < abs(y). Siehe auchRoundFromZero.
RoundFromZero erfordert mindestens Julia 1.9.
Beispiele:
julia> x = 9; y = 4;
julia> x % y # dasselbe wie rem(x, y)
1
julia> x ÷ y # dasselbe wie div(x, y)
2
julia> x == div(x, y) * y + rem(x, y)
trueBase.Math.rem2pi — Functionrem2pi(x, r::RoundingMode)Berechnet den Rest von x nach der ganzzahligen Division durch 2π, wobei der Quotient gemäß dem Rundungsmodus r gerundet wird. Mit anderen Worten, die Größe
x - 2π*round(x/(2π),r)ohne Zwischenrundung. Dies verwendet intern eine hochpräzise Näherung von 2π und liefert daher ein genaueres Ergebnis als rem(x,2π,r)
- wenn
r == RoundNearest, dann liegt das Ergebnis im Intervall $[-π, π]$. Dies wird im Allgemeinen das genaueste Ergebnis sein. Siehe auchRoundNearest. - wenn
r == RoundToZero, dann liegt das Ergebnis im Intervall $[0, 2π]$, wennxpositiv ist, oder $[-2π, 0]$ andernfalls. Siehe auchRoundToZero. - wenn
r == RoundDown, dann liegt das Ergebnis im Intervall $[0, 2π]$. Siehe auchRoundDown. - wenn
r == RoundUp, dann liegt das Ergebnis im Intervall $[-2π, 0]$. Siehe auchRoundUp.
Beispiele
julia> rem2pi(7pi/4, RoundNearest)
-0.7853981633974485
julia> rem2pi(7pi/4, RoundDown)
5.497787143782138Base.Math.mod2pi — Functionmod2pi(x)Modulus nach Division durch 2π, Rückgabe im Bereich $[0,2π)$.
Diese Funktion berechnet eine Fließkommadarstellung des Modulus nach Division durch numerisch exaktes 2π und ist daher nicht genau dasselbe wie mod(x,2π), das den Modulus von x relativ zur Division durch die Fließkommazahl 2π berechnen würde.
!!! Hinweis Abhängig vom Format des Eingabewerts kann der nächstgelegene darstellbare Wert zu 2π kleiner als 2π sein. Zum Beispiel wird der Ausdruck mod2pi(2π) nicht 0 zurückgeben, da der Zwischenwert von 2*π ein Float64 ist und 2*Float64(π) < 2*big(π). Siehe rem2pi für eine verfeinerte Kontrolle dieses Verhaltens.
Beispiele
julia> mod2pi(9*pi/4)
0.7853981633974481Base.divrem — Functiondivrem(x, y, r::RoundingMode=RoundToZero)Der Quotient und der Rest aus der euklidischen Division. Entspricht (div(x, y, r), rem(x, y, r)). Entsprechend ist dieser Aufruf mit dem Standardwert von r gleichbedeutend mit (x ÷ y, x % y).
Beispiele
julia> divrem(3, 7)
(0, 3)
julia> divrem(7, 3)
(2, 1)Base.fldmod — Functionfldmod(x, y)Der abgerundete Quotient und der Modulus nach der Division. Ein praktischer Wrapper für divrem(x, y, RoundDown). Entspricht (fld(x, y), mod(x, y)).
Base.fld1 — Functionfld1(x, y)Bodendivision, die einen Wert zurückgibt, der mit mod1(x,y) übereinstimmt.
Beispiele
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)
trueBase.mod1 — Functionmod1(x, y)Modulus nach ganzzahliger Division, gibt einen Wert r zurück, sodass mod(r, y) == mod(x, y) im Bereich $(0, y]$ für positives y und im Bereich $[y,0)$ für negatives y.
Bei ganzzahligen Argumenten und positivem y entspricht dies mod(x, 1:y), und ist daher natürlich für 1-basierte Indizierung. Im Vergleich dazu ist mod(x, y) == mod(x, 0:y-1) natürlich für Berechnungen mit Offsets oder Schritten.
Siehe auch mod, fld1, fldmod1.
Beispiele
julia> mod1(4, 2)
2
julia> mod1.(-5:5, 3)'
1×11 adjoint(::Vector{Int64}) mit 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.1Base.fldmod1 — FunctionBase.:// — Function//(num, den)Teile zwei ganze Zahlen oder rationale Zahlen, wobei ein Rational Ergebnis zurückgegeben wird. Allgemeiner kann // für die exakte rationale Division anderer numerischer Typen mit ganzzahligen oder rationalen Komponenten verwendet werden, wie z. B. komplexe Zahlen mit ganzzahligen Komponenten.
Beachte, dass Gleitkomma-(AbstractFloat) Argumente von // nicht erlaubt sind (auch wenn die Werte rational sind). Die Argumente müssen Untertypen von Integer, Rational oder deren Kombinationen sein.
Beispiele
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)
[...]Base.rationalize — Functionrationalize([T<:Integer=Int,] x; tol::Real=eps(x))Näherungsweise Gleitkommazahl x als eine Rational Zahl mit Komponenten des angegebenen Ganzzahltyps. Das Ergebnis unterscheidet sich von x um nicht mehr als tol.
Beispiele
julia> rationalize(5.6)
28//5
julia> a = rationalize(BigInt, 10.3)
103//10
julia> typeof(numerator(a))
BigIntBase.numerator — Functionnumerator(x)Zähler der rationalen Darstellung von x.
Beispiele
julia> numerator(2//3)
2
julia> numerator(4)
4Base.denominator — Functiondenominator(x)Nenner der rationalen Darstellung von x.
Beispiele
julia> denominator(2//3)
3
julia> denominator(4)
1Base.:<< — Function<<(x, n)Linker Bitverschiebungsoperator, x << n. Für n >= 0 ist das Ergebnis x, das um n Bits nach links verschoben wird, wobei mit 0s aufgefüllt wird. Dies entspricht x * 2^n. Für n < 0 entspricht dies x >> -n.
Beispiele
julia> Int8(3) << 2
12
julia> bitstring(Int8(3))
"00000011"
julia> bitstring(Int8(12))
"00001100"<<(B::BitVector, n) -> BitVectorLinker Bitverschiebungsoperator, B << n. Für n >= 0 ist das Ergebnis B mit Elementen, die um n Positionen nach hinten verschoben sind, wobei mit false-Werten aufgefüllt wird. Wenn n < 0, werden die Elemente nach vorne verschoben. Entspricht B >> -n.
Beispiele
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
0Base.:>> — Function>>(x, n)Rechter Bitverschiebungsoperator, x >> n. Für n >= 0 ist das Ergebnis x, das um n Bits nach rechts verschoben wird, wobei mit 0s gefüllt wird, wenn x >= 0, und mit 1s, wenn x < 0, wobei das Vorzeichen von x beibehalten wird. Dies entspricht fld(x, 2^n). Für n < 0 entspricht dies x << -n.
Beispiele
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) -> BitVectorRechter Bitverschiebungsoperator, B >> n. Für n >= 0 ist das Ergebnis B mit Elementen, die um n Positionen nach vorne verschoben werden, wobei mit false-Werten aufgefüllt wird. Wenn n < 0 ist, werden die Elemente nach hinten verschoben. Entspricht B << -n.
Beispiele
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
0Base.:>>> — Function>>>(x, n)Unsignierter rechter Bitverschiebungsoperator, x >>> n. Für n >= 0 ist das Ergebnis x, das um n Bits nach rechts verschoben wird, wobei mit 0s aufgefüllt wird. Für n < 0 entspricht dies x << -n.
Für Unsigned Ganzzahltypen entspricht dies >>. Für Signed Ganzzahltypen entspricht dies signed(unsigned(x) >> n).
Beispiele
julia> Int8(-14) >>> 2
60
julia> bitstring(Int8(-14))
"11110010"
julia> bitstring(Int8(60))
"00111100"BigInts werden behandelt, als hätten sie eine unendliche Größe, sodass kein Auffüllen erforderlich ist und dies entspricht >>.
>>>(B::BitVector, n) -> BitVectorUnsignierter rechter Bitverschiebungsoperator, B >>> n. Entspricht B >> n. Siehe >> für Details und Beispiele.
Base.bitrotate — Functionbitrotate(x::Base.BitInteger, k::Integer)bitrotate(x, k) implementiert eine bitweise Rotation. Es gibt den Wert von x zurück, dessen Bits k Mal nach links rotiert wurden. Ein negativer Wert von k rotiert stattdessen nach rechts.
Diese Funktion erfordert Julia 1.5 oder höher.
Siehe auch: <<, 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:exprZitiert einen Ausdruck expr und gibt den abstrakten Syntaxbaum (AST) von expr zurück. Der AST kann vom Typ Expr, Symbol oder einem literalen Wert sein. Die Syntax :identifier wertet zu einem Symbol aus.
Siehe auch: Expr, Symbol, Meta.parse
Beispiele
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)Konstruiere ein spezialisiertes Array mit gleichmäßig verteilten Elementen und optimierter Speicherung (ein AbstractRange) aus den Argumenten. Mathematisch wird ein Bereich eindeutig durch drei der Werte start, step, stop und length bestimmt. Gültige Aufrufe von range sind:
- Rufe
rangemit drei der Wertestart,step,stop,lengthauf. - Rufe
rangemit zwei der Wertestart,stop,lengthauf. In diesem Fall wirdstepals eins angenommen. Wenn beide Argumente Ganzzahlen sind, wird einUnitRangezurückgegeben. - Rufe
rangemit einem der Wertestopoderlengthauf.startundstepwerden als eins angenommen.
Siehe Erweiterte Hilfe für zusätzliche Details zum zurückgegebenen Typ. Siehe auch logrange für logarithmisch verteilte Punkte.
Beispiele
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.0Wenn length nicht angegeben ist und stop - start kein ganzzahliges Vielfaches von step ist, wird ein Bereich erzeugt, der vor stop endet.
julia> range(1, 3.5, step=2)
1.0:2.0:3.0Besondere Sorgfalt wird darauf verwendet, sicherzustellen, dass Zwischenwerte rational berechnet werden. Um diesen induzierten Overhead zu vermeiden, siehe den LinRange Konstruktor.
stop als positionsgebundenes Argument erfordert mindestens Julia 1.1.
Die Versionen ohne Schlüsselwortargumente und start als Schlüsselwortargument erfordern mindestens Julia 1.7.
Die Versionen mit stop als einzigem Schlüsselwortargument oder length als einzigem Schlüsselwortargument erfordern mindestens Julia 1.8.
Erweiterte Hilfe
range erzeugt ein Base.OneTo, wenn die Argumente Ganzzahlen sind und
- Nur
lengthangegeben ist - Nur
stopangegeben ist
range erzeugt einen UnitRange, wenn die Argumente Ganzzahlen sind und
- Nur
startundstopangegeben sind - Nur
lengthundstopangegeben sind
Ein UnitRange wird nicht erzeugt, wenn step angegeben ist, selbst wenn es als eins angegeben ist.
Base.OneTo — TypeBase.OneTo(n)Definieren Sie einen AbstractUnitRange, der sich wie 1:n verhält, mit dem zusätzlichen Unterschied, dass die Untergrenze (durch das Typsystem) garantiert 1 ist.
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}Ein Bereich r, bei dem r[i] Werte vom Typ T erzeugt (im ersten Fall wird T automatisch abgeleitet), parametrisiert durch einen referenzwert, einen step und die length. Standardmäßig ist ref der Startwert r[1], alternativ können Sie ihn als Wert von r[offset] für einen anderen Index 1 <= offset <= len angeben. Die Syntax a:b oder a:b:c, wobei einer von a, b oder c Fließkommazahlen sind, erstellt einen StepRangeLen.
Der 4. Typparameter L erfordert mindestens Julia 1.7.
Base.logrange — Functionlogrange(start, stop, length)
logrange(start, stop; length)Konstruiere ein spezialisiertes Array, dessen Elemente logarithmisch zwischen den gegebenen Endpunkten verteilt sind. Das heißt, das Verhältnis aufeinanderfolgender Elemente ist konstant und wird aus der Länge berechnet.
Dies ist ähnlich wie geomspace in Python. Im Gegensatz zu PowerRange in Mathematica gibst du die Anzahl der Elemente an, nicht das Verhältnis. Im Gegensatz zu logspace in Python und Matlab sind die start- und stop-Argumente immer die ersten und letzten Elemente des Ergebnisses, nicht Potenzen, die auf eine Basis angewendet werden.
Beispiele
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) # mittleres Element ist das geometrische Mittel
true
julia> range(10, 40, length=3)[2] ≈ (10 + 40)/2 # arithmetisches Mittel
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)
trueSiehe den LogRange Typ für weitere Details.
Siehe auch range für linear verteilte Punkte.
Diese Funktion erfordert mindestens Julia 1.11.
Base.LogRange — TypeLogRange{T}(start, stop, len) <: AbstractVector{T}Ein Bereich, dessen Elemente logarithmisch zwischen start und stop verteilt sind, wobei der Abstand durch len gesteuert wird. Zurückgegeben von logrange.
Wie bei LinRange werden die ersten und letzten Elemente genau die angegebenen sein, aber Zwischenwerte können kleine Gleitkommafehler aufweisen. Diese werden unter Verwendung der Logarithmen der Endpunkte berechnet, die beim Erstellen gespeichert werden, oft in höherer Präzision als T.
Beispiele
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]
trueBeachten Sie, dass der ganzzahlige eltype T nicht erlaubt ist. Verwenden Sie beispielsweise round.(Int, xs) oder explizite Potenzen einer ganzzahligen Basis:
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]Dieser Typ erfordert mindestens Julia 1.11.
Base.:== — Function==(x, y)Generischer Gleichheitsoperator. Fällt zurück auf ===. Sollte für alle Typen mit einem Konzept von Gleichheit implementiert werden, basierend auf dem abstrakten Wert, den eine Instanz repräsentiert. Zum Beispiel werden alle numerischen Typen nach ihrem numerischen Wert verglichen, unabhängig vom Typ. Strings werden als Zeichenfolgen verglichen, wobei die Kodierung ignoriert wird. Sammlungen desselben Typs vergleichen im Allgemeinen ihre Schlüsselsätze, und wenn diese == sind, vergleichen sie die Werte für jeden dieser Schlüssel und geben true zurück, wenn alle solchen Paare == sind. Andere Eigenschaften werden typischerweise nicht berücksichtigt (wie der genaue Typ).
Dieser Operator folgt den IEEE-Semantiken für Fließkommazahlen: 0.0 == -0.0 und NaN != NaN.
Das Ergebnis ist vom Typ Bool, es sei denn, einer der Operanden ist missing, in diesem Fall wird missing zurückgegeben (dreiwertige Logik). Sammlungen implementieren im Allgemeinen eine dreiwertige Logik ähnlich wie all, wobei missing zurückgegeben wird, wenn einer der Operanden fehlende Werte enthält und alle anderen Paare gleich sind. Verwenden Sie isequal oder ===, um immer ein Bool-Ergebnis zu erhalten.
Implementierung
Neue numerische Typen sollten diese Funktion für zwei Argumente des neuen Typs implementieren und den Vergleich mit anderen Typen, wo möglich, über Promotionsregeln handhaben.
isequal fällt auf == zurück, sodass neue Methoden von == vom Dict-Typ verwendet werden, um Schlüssel zu vergleichen. Wenn Ihr Typ als Schlüssel in einem Wörterbuch verwendet wird, sollte er daher auch hash implementieren.
Wenn ein Typ ==, isequal und isless definiert, sollte er auch < implementieren, um die Konsistenz der Vergleiche sicherzustellen.
Base.:!= — Function!=(x, y)
≠(x,y)Ungleichheitsvergleichsoperator. Gibt immer die entgegengesetzte Antwort wie == zurück.
Implementierung
Neue Typen sollten dies im Allgemeinen nicht implementieren und stattdessen auf die Fallback-Definition !=(x,y) = !(x==y) zurückgreifen.
Beispiele
julia> 3 != 2
true
julia> "foo" ≠ "foo"
false!=(x)Erstellen Sie eine Funktion, die ihr Argument mit x unter Verwendung von != vergleicht, d.h. eine Funktion, die äquivalent zu y -> y != x ist. Die zurückgegebene Funktion ist vom Typ Base.Fix2{typeof(!=)}, die verwendet werden kann, um spezialisierte Methoden zu implementieren.
Diese Funktionalität erfordert mindestens Julia 1.2.
Base.:!== — Function!==(x, y)
≢(x,y)Gibt immer die entgegengesetzte Antwort wie ===.
Beispiele
julia> a = [1, 2]; b = [1, 2];
julia> a ≢ b
true
julia> a ≢ a
falseBase.:< — Function<(x, y)Weniger-als-Vergleichsoperator. Fällt zurück auf isless. Aufgrund des Verhaltens von Gleitkomma-NaN-Werten implementiert dieser Operator eine partielle Ordnung.
Implementierung
Neue Typen mit einer kanonischen partiellen Ordnung sollten diese Funktion für zwei Argumente des neuen Typs implementieren. Typen mit einer kanonischen totalen Ordnung sollten stattdessen isless implementieren.
Siehe auch isunordered.
Beispiele
julia> 'a' < 'b'
true
julia> "abc" < "abd"
true
julia> 5 < 3
false<(x)Erstellen Sie eine Funktion, die ihr Argument mit x unter Verwendung von < vergleicht, d.h. eine Funktion, die äquivalent zu y -> y < x ist. Die zurückgegebene Funktion hat den Typ Base.Fix2{typeof(<)}, der verwendet werden kann, um spezialisierte Methoden zu implementieren.
Diese Funktionalität erfordert mindestens Julia 1.2.
Base.:<= — Function<=(x, y)
≤(x,y)Weniger-als-oder-gleich Vergleichsoperator. Fällt zurück auf (x < y) | (x == y).
Beispiele
julia> 'a' <= 'b'
true
julia> 7 ≤ 7 ≤ 9
true
julia> "abc" ≤ "abc"
true
julia> 5 <= 3
false<=(x)Erstellen Sie eine Funktion, die ihr Argument mit x unter Verwendung von <= vergleicht, d.h. eine Funktion, die äquivalent zu y -> y <= x ist. Die zurückgegebene Funktion ist vom Typ Base.Fix2{typeof(<=)}, die verwendet werden kann, um spezialisierte Methoden zu implementieren.
Diese Funktionalität erfordert mindestens Julia 1.2.
Base.:> — Function>(x, y)Größer-als-Vergleichsoperator. Fällt zurück auf y < x.
Implementierung
Im Allgemeinen sollten neue Typen < anstelle dieser Funktion implementieren und sich auf die Rückfalldefinition >(x, y) = y < x verlassen.
Beispiele
julia> 'a' > 'b'
false
julia> 7 > 3 > 1
true
julia> "abc" > "abd"
false
julia> 5 > 3
true>(x)Erstellen Sie eine Funktion, die ihr Argument mit x unter Verwendung von > vergleicht, d.h. eine Funktion, die äquivalent zu y -> y > x ist. Die zurückgegebene Funktion hat den Typ Base.Fix2{typeof(>)}, der verwendet werden kann, um spezialisierte Methoden zu implementieren.
Diese Funktionalität erfordert mindestens Julia 1.2.
Base.:>= — Function>=(x, y)
≥(x,y)Größer-als-oder-gleich Vergleichsoperator. Fällt zurück auf y <= x.
Beispiele
julia> 'a' >= 'b'
false
julia> 7 ≥ 7 ≥ 3
true
julia> "abc" ≥ "abc"
true
julia> 5 >= 3
true>=(x)Erstellen Sie eine Funktion, die ihr Argument mit x unter Verwendung von >= vergleicht, d.h. eine Funktion, die äquivalent zu y -> y >= x ist. Die zurückgegebene Funktion ist vom Typ Base.Fix2{typeof(>=)}, die verwendet werden kann, um spezialisierte Methoden zu implementieren.
Diese Funktionalität erfordert mindestens Julia 1.2.
Base.cmp — Functioncmp(x,y)Gibt -1, 0 oder 1 zurück, je nachdem, ob x kleiner, gleich oder größer als y ist. Verwendet die totale Ordnung, die durch isless implementiert ist.
Beispiele
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})
[...]cmp(<, x, y)Gibt -1, 0 oder 1 zurück, je nachdem, ob x kleiner, gleich oder größer als y ist. Das erste Argument gibt eine Funktion für den Vergleich "kleiner als" an, die verwendet werden soll.
cmp(a::AbstractString, b::AbstractString) -> IntVergleiche zwei Strings. Gib 0 zurück, wenn beide Strings die gleiche Länge haben und das Zeichen an jedem Index in beiden Strings gleich ist. Gib -1 zurück, wenn a ein Präfix von b ist oder wenn a alphabetisch vor b kommt. Gib 1 zurück, wenn b ein Präfix von a ist oder wenn b alphabetisch vor a kommt (technisch gesehen, lexikografische Reihenfolge nach Unicode-Codepunkten).
Beispiele
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", "β")
-1Base.:~ — FunctionBase.:& — Functionx & yBitweises und. Implementiert dreiwertige Logik, gibt missing zurück, wenn ein Operand missing ist und der andere true. Fügen Sie Klammern für die Funktionsanwendungsform hinzu: (&)(x, y).
Beispiele
julia> 4 & 10
0
julia> 4 & 12
4
julia> true & missing
missing
julia> false & missing
falseBase.:| — Functionx | yBitweises Oder. Implementiert dreiwertige Logik, gibt missing zurück, wenn ein Operand missing und der andere false ist.
Beispiele
julia> 4 | 10
14
julia> 4 | 1
5
julia> true | missing
true
julia> false | missing
missingBase.xor — Functionxor(x, y)
⊻(x, y)Bitweises exklusives Oder von x und y. Implementiert dreiwertige Logik, gibt missing zurück, wenn eines der Argumente missing ist.
Die Infix-Operation a ⊻ b ist ein Synonym für xor(a,b), und ⊻ kann durch Tab-Vervollständigung von \xor oder \veebar in der Julia REPL eingegeben werden.
Beispiele
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
0Base.nand — Functionnand(x, y)
⊼(x, y)Bitweises nand (nicht und) von x und y. Implementiert dreiwertige Logik, gibt missing zurück, wenn eines der Argumente missing ist.
Die Infix-Operation a ⊼ b ist ein Synonym für nand(a,b), und ⊼ kann durch Tab-Vervollständigung von \nand oder \barwedge in der Julia REPL eingegeben werden.
Beispiele
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
1Base.nor — Functionnor(x, y)
⊽(x, y)Bitweises nor (nicht oder) von x und y. Implementiert dreiwertige Logik, gibt missing zurück, wenn eines der Argumente missing ist und das andere nicht true.
Die Infix-Operation a ⊽ b ist ein Synonym für nor(a,b), und ⊽ kann durch Tab-Vervollständigung von \nor oder \barvee in der Julia REPL eingegeben werden.
Beispiele
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
1Base.:! — Function!(x)Boolesches Nicht. Implementiert dreiwertige Logik, gibt missing zurück, wenn x missing ist.
Siehe auch ~ für bitweises Nicht.
Beispiele
julia> !true
false
julia> !false
true
julia> !missing
missing
julia> .![true false true]
1×3 BitMatrix:
0 1 0!f::FunktionPrädikatfunktion Negation: Wenn das Argument von ! eine Funktion ist, gibt es eine zusammengesetzte Funktion zurück, die die boolesche Negation von f berechnet.
Siehe auch ∘.
Beispiele
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: |-| < ⇒ |()-()| < "Ab Julia 1.9 gibt !f eine ComposedFunction zurück, anstatt einer anonymen Funktion.
&& — Keywordx && yKurzschluss-Boolean-UND.
Siehe auch &, den ternären Operator ? : und den Handbuchabschnitt über Kontrollfluss.
Beispiele
julia> x = 3;
julia> x > 1 && x < 10 && x isa Int
true
julia> x < 0 && error("erwartetes positives x")
false|| — Keywordx || yKurzschluss-Boolean-ODER.
Beispiele
julia> pi < 3 || ℯ < 3
true
julia> false || true || println("keines ist wahr!")
trueMathematical Functions
Base.isapprox — Functionisapprox(x, y; atol::Real=0, rtol::Real=atol>0 ? 0 : √eps, nans::Bool=false[, norm::Function])Ungenaue Gleichheitsvergleiche. Zwei Zahlen vergleichen sich gleich, wenn ihre relative Distanz oder ihre absolute Distanz innerhalb der Toleranzgrenzen liegt: isapprox gibt true zurück, wenn norm(x-y) <= max(atol, rtol*max(norm(x), norm(y))). Der Standardwert für atol (absolute Toleranz) ist null und der Standardwert für rtol (relative Toleranz) hängt von den Typen von x und y ab. Das Schlüsselwortargument nans bestimmt, ob NaN-Werte als gleich betrachtet werden oder nicht (Standardwert ist false).
Für reale oder komplexe Gleitkommawerte, wenn kein atol > 0 angegeben ist, ist der Standardwert für rtol die Quadratwurzel von eps des Typs von x oder y, je nachdem, welcher größer ist (am wenigsten präzise). Dies entspricht der Anforderung, dass etwa die Hälfte der signifikanten Ziffern gleich sein muss. Andernfalls, z. B. für ganzzahlige Argumente oder wenn ein atol > 0 angegeben ist, ist der Standardwert für rtol null.
Das Schlüsselwort norm hat standardmäßig abs für numerische (x,y) und LinearAlgebra.norm für Arrays (wo eine alternative norm-Wahl manchmal nützlich ist). Wenn x und y Arrays sind, fällt der Vergleich zurück auf die Überprüfung, ob alle Elemente von x und y komponentenweise ungefähr gleich sind, wennnorm(x-y)nicht endlich ist (d. h.±InfoderNaN`).
Der binäre Operator ≈ ist äquivalent zu isapprox mit den Standardargumenten, und x ≉ y ist äquivalent zu !isapprox(x,y).
Beachten Sie, dass x ≈ 0 (d. h. der Vergleich mit null unter den Standardtoleranzen) äquivalent zu x == 0 ist, da der Standardwert für atol 0 ist. In solchen Fällen sollten Sie entweder eine geeignete atol angeben (oder norm(x) ≤ atol verwenden) oder Ihren Code umstellen (z. B. x ≈ y anstelle von x - y ≈ 0 verwenden). Es ist nicht möglich, automatisch eine von null verschiedene atol auszuwählen, da sie von der gesamten Skalierung (den "Einheiten") Ihres Problems abhängt: Zum Beispiel ist in x - y ≈ 0 atol=1e-9 eine absurd kleine Toleranz, wenn x der Radius der Erde in Metern ist, aber eine absurd große Toleranz, wenn x der Radius eines Wasserstoffatoms in Metern ist.
Das Übergeben des Schlüsselwortarguments norm beim Vergleichen numerischer (nicht-array) Argumente erfordert Julia 1.6 oder höher.
Beispiele
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`
trueisapprox(x; kwargs...) / ≈(x; kwargs...)Erstellen Sie eine Funktion, die ihr Argument mit x unter Verwendung von ≈ vergleicht, d.h. eine Funktion, die äquivalent zu y -> y ≈ x ist.
Die unterstützten Schlüsselwortargumente sind die gleichen wie die in der 2-Argumente isapprox.
Diese Methode erfordert Julia 1.5 oder später.
Base.sin — Methodsin(x)Berechne den Sinus von x, wobei x in Bogenmaß ist.
Siehe auch sind, sinpi, sincos, cis, asin.
Beispiele
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.5imBase.cos — MethodBase.Math.sincos — Methodsincos(x)Berechnet gleichzeitig den Sinus und Kosinus von x, wobei x in Bogenmaß ist, und gibt ein Tupel (sinus, kosinus) zurück.
Base.tan — Methodtan(x)Berechne den Tangens von x, wobei x in Bogenmaß ist.
Base.Math.sind — Functionsind(x)Berechne den Sinus von x, wobei x in Grad ist. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.cosd — Functioncosd(x)Berechne den Kosinus von x, wobei x in Grad ist. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.tand — Functiontand(x)Berechne den Tangens von x, wobei x in Grad ist. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.sincosd — Functionsincosd(x)Berechne gleichzeitig den Sinus und Kosinus von x, wobei x in Grad angegeben ist.
Diese Funktion erfordert mindestens Julia 1.3.
Base.Math.sinpi — Functionsinpi(x)Berechne $\sin(\pi x)$ genauer als sin(pi*x), insbesondere für große x.
Base.Math.cospi — Functioncospi(x)Berechne $\cos(\pi x)$ genauer als cos(pi*x), insbesondere für große x.
Base.Math.tanpi — Functiontanpi(x)Berechne $\tan(\pi x)$ genauer als tan(pi*x), insbesondere für große x.
Diese Funktion erfordert mindestens Julia 1.10.
Base.Math.sincospi — Functionsincospi(x)Berechnet gleichzeitig sinpi(x) und cospi(x) (den Sinus und Kosinus von π*x, wobei x in Bogenmaß ist) und gibt ein Tupel (sinus, kosinus) zurück.
Diese Funktion erfordert Julia 1.6 oder höher.
Base.sinh — Methodsinh(x)Berechne den hyperbolischen Sinus von x.
Base.cosh — Methodcosh(x)Berechne den hyperbolischen Kosinus von x.
Base.tanh — Methodtanh(x)Berechne den hyperbolischen Tangens von x.
Beispiele
julia> tanh.(-3:3f0) # Hier ist 3f0 ein 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.9950547536867306imBase.asin — Methodasin(x)Berechne den inversen Sinus von x, wobei die Ausgabe in Bogenmaß erfolgt.
Siehe auch asind für die Ausgabe in Grad.
Beispiele
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)Berechne den inversen Kosinus von x, wobei die Ausgabe in Bogenmaß erfolgt.
Base.atan — Methodatan(y)
atan(y, x)Berechne den inversen Tangens von y oder y/x, jeweils.
Für ein reales Argument ist dies der Winkel in Bogenmaß zwischen der positiven x-Achse und dem Punkt (1, y), wobei ein Wert im Intervall $[-\pi/2, \pi/2]$ zurückgegeben wird.
Für zwei Argumente ist dies der Winkel in Bogenmaß zwischen der positiven x-Achse und dem Punkt (x, y), wobei ein Wert im Intervall $[-\pi, \pi]$ zurückgegeben wird. Dies entspricht einer standardmäßigen atan2 Funktion. Beachte, dass konventionell atan(0.0,x) als $\pi$ definiert ist und atan(-0.0,x) als $-\pi$, wenn x < 0.
Siehe auch atand für Grad.
Beispiele
julia> rad2deg(atan(-1/√3))
-30.000000000000004
julia> rad2deg(atan(-1, √3))
-30.000000000000004
julia> rad2deg(atan(1, -√3))
150.0Base.Math.asind — Functionasind(x)Berechne den inversen Sinus von x, wobei die Ausgabe in Grad erfolgt. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.acosd — Functionacosd(x)Berechne den inversen Kosinus von x, wobei die Ausgabe in Grad erfolgt. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.atand — Functionatand(y)
atand(y,x)Berechne den inversen Tangens von y oder y/x, jeweils, wobei die Ausgabe in Grad erfolgt.
Die Methode mit einem Argument unterstützt ab Julia 1.7 quadratische Matrixargumente.
Base.Math.sec — Methodsec(x)Berechne die Sekante von x, wobei x in Bogenmaß ist.
Base.Math.csc — Methodcsc(x)Berechne die Kosekans von x, wobei x in Bogenmaß ist.
Base.Math.cot — Methodcot(x)Berechne den Kotangens von x, wobei x in Bogenmaß ist.
Base.Math.secd — Functionsecd(x)Berechne die Sekante von x, wobei x in Grad ist.
Base.Math.cscd — Functioncscd(x)Berechne die Kosekans von x, wobei x in Grad ist.
Base.Math.cotd — Functioncotd(x)Berechne den Kotangens von x, wobei x in Grad ist.
Base.Math.asec — Methodasec(x)Berechne den inversen Sekanten von x, wobei die Ausgabe in Bogenmaß erfolgt.
Base.Math.acsc — Methodacsc(x)Berechne den inversen Kosekans von x, wobei die Ausgabe in Bogenmaß erfolgt.
Base.Math.acot — Methodacot(x)Berechne den inversen Kotangens von x, wobei die Ausgabe in Bogenmaß erfolgt.
Base.Math.asecd — Functionasecd(x)Berechne den inversen Sekanten von x, wobei die Ausgabe in Grad erfolgt. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.acscd — Functionacscd(x)Berechne den inversen Kosekans von x, wobei die Ausgabe in Grad erfolgt. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.acotd — Functionacotd(x)Berechne den inversen Kotangens von x, wobei die Ausgabe in Grad erfolgt. Wenn x eine Matrix ist, muss x eine quadratische Matrix sein.
Matrixargumente erfordern Julia 1.7 oder höher.
Base.Math.sech — Methodsech(x)Berechne die hyperbolische Sekante von x.
Base.Math.csch — Methodcsch(x)Berechne die hyperbolische Kosekans von x.
Base.Math.coth — Methodcoth(x)Berechne den hyperbolischen Kotangens von x.
Base.asinh — Methodasinh(x)Berechne den inversen hyperbolischen Sinus von x.
Base.acosh — Methodacosh(x)Berechne den inversen hyperbolischen Kosinus von x.
Base.atanh — Methodatanh(x)Berechne den inversen hyperbolischen Tangens von x.
Base.Math.asech — Methodasech(x)Berechne den inversen hyperbolischen Sekanten von x.
Base.Math.acsch — Methodacsch(x)Berechne den inversen hyperbolischen Kosekans von x.
Base.Math.acoth — Methodacoth(x)Berechne den inversen hyperbolischen Kotangens von x.
Base.Math.sinc — Functionsinc(x)Berechne die normalisierte Sinc-Funktion $\operatorname{sinc}(x) = \sin(\pi x) / (\pi x)$, wenn $x \neq 0$, und $1$, wenn $x = 0$.
Siehe auch cosc, ihre Ableitung.
Base.Math.cosc — Functioncosc(x)Berechne $\cos(\pi x) / x - \sin(\pi x) / (\pi x^2)$, wenn $x \neq 0$, und $0$, wenn $x = 0$. Dies ist die Ableitung von sinc(x).
Siehe auch sinc.
Base.Math.deg2rad — Functiondeg2rad(x)Konvertiere x von Grad in Bogenmaß.
Beispiele
julia> deg2rad(90)
1.5707963267948966Base.Math.rad2deg — FunctionBase.Math.hypot — Functionhypot(x, y)Berechne die Hypotenuse $\sqrt{|x|^2+|y|^2}$ und vermeide Überlauf und Unterlauf.
Dieser Code ist eine Implementierung des Algorithmus, der in: An Improved Algorithm for hypot(a,b) von Carlos F. Borges beschrieben ist. Der Artikel ist online auf arXiv unter dem Link https://arxiv.org/abs/1904.09481 verfügbar.
hypot(x...)Berechne die Hypotenuse $\sqrt{\sum |x_i|^2}$ und vermeide Überlauf und Unterlauf.
Siehe auch norm in der LinearAlgebra Standardbibliothek.
Beispiele
julia> a = Int64(10)^10;
julia> hypot(a, a)
1.4142135623730951e10
julia> √(a^2 + a^2) # a^2 überläuft
ERROR: DomainError with -2.914184810805068e18:
sqrt wurde mit einem negativen reellen Argument aufgerufen, gibt aber nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuche 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)
trueBase.log — Methodlog(x)Berechnet den natürlichen Logarithmus von x.
Wirft DomainError für negative Real Argumente. Verwenden Sie komplexe Argumente, um komplexe Ergebnisse zu erhalten. Hat einen Astschnitt entlang der negativen reellen Achse, für den -0.0im als unterhalb der Achse betrachtet wird.
Siehe auch ℯ, log1p, log2, log10.
Beispiele
julia> log(2)
0.6931471805599453
julia> log(-3)
ERROR: DomainError with -3.0:
log wurde mit einem negativen reellen Argument aufgerufen, gibt jedoch nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuchen Sie 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.0Base.log — Methodlog(b,x)Berechnet den Logarithmus von x zur Basis b. Wirft DomainError für negative Real Argumente.
Beispiele
julia> log(4,8)
1.5
julia> log(4,2)
0.5
julia> log(-2, 3)
ERROR: DomainError mit -2.0:
log wurde mit einem negativen reellen Argument aufgerufen, gibt jedoch nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuchen Sie log(Complex(x)).
Stacktrace:
[1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]
julia> log(2, -3)
ERROR: DomainError mit -3.0:
log wurde mit einem negativen reellen Argument aufgerufen, gibt jedoch nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuchen Sie log(Complex(x)).
Stacktrace:
[1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]Base.log2 — Functionlog2(x)Berechnet den Logarithmus von x zur Basis 2. Wirft DomainError für negative Real Argumente.
Siehe auch: exp2, ldexp, ispow2.
Beispiele
julia> log2(4)
2.0
julia> log2(10)
3.321928094887362
julia> log2(-2)
ERROR: DomainError mit -2.0:
log2 wurde mit einem negativen reellen Argument aufgerufen, gibt aber nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuchen Sie 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.0Base.log10 — Functionlog10(x)Berechne den Logarithmus von x zur Basis 10. Wirft DomainError für negative Real Argumente.
Beispiele
julia> log10(100)
2.0
julia> log10(2)
0.3010299956639812
julia> log10(-2)
ERROR: DomainError mit -2.0:
log10 wurde mit einem negativen reellen Argument aufgerufen, gibt aber nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuche log10(Complex(x)).
Stacktrace:
[1] throw_complex_domainerror(f::Symbol, x::Float64) at ./math.jl:31
[...]Base.log1p — Functionlog1p(x)Genauer natürlicher Logarithmus von 1+x. Wirft DomainError für Real Argumente kleiner als -1.
Beispiele
julia> log1p(-0.5)
-0.6931471805599453
julia> log1p(0)
0.0
julia> log1p(-2)
ERROR: DomainError mit -2.0:
log1p wurde mit einem reellen Argument < -1 aufgerufen, gibt aber nur ein komplexes Ergebnis zurück, wenn es mit einem komplexen Argument aufgerufen wird. Versuchen Sie log1p(Complex(x)).
Stacktrace:
[1] throw_complex_domainerror(::Symbol, ::Float64) at ./math.jl:31
[...]Base.Math.frexp — Functionfrexp(val)Gibt (x,exp) zurück, so dass x eine Größe im Intervall $[1/2, 1)$ oder 0 hat, und val gleich $x \times 2^{exp}$ ist.
Siehe auch significand, exponent, ldexp.
Beispiele
julia> frexp(6.0)
(0.75, 3)
julia> significand(6.0), exponent(6.0) # Intervall [1, 2) stattdessen
(1.5, 2)
julia> frexp(0.0), frexp(NaN), frexp(-Inf) # Exponent würde einen Fehler geben
((0.0, 0), (NaN, 0), (-Inf, 0))Base.exp — Methodexp(x)Berechne die natürliche Basisexponentialfunktion von x, mit anderen Worten $ℯ^x$.
Siehe auch exp2, exp10 und cis.
Beispiele
julia> exp(1.0)
2.718281828459045
julia> exp(im * pi) ≈ cis(pi)
trueBase.exp2 — Functionexp2(x)Berechne die Basis-2-Exponentialfunktion von x, mit anderen Worten $2^x$.
Beispiele
julia> exp2(5)
32.0
julia> 2^5
32
julia> exp2(63) > typemax(Int)
trueBase.exp10 — Functionexp10(x)Berechne die Basis 10 Exponentialfunktion von x, mit anderen Worten $10^x$.
Beispiele
julia> exp10(2)
100.0
julia> 10^2
100Base.Math.ldexp — FunctionBase.Math.modf — Functionmodf(x)Gibt ein Tupel (fpart, ipart) der Bruch- und Ganzzahlteile einer Zahl zurück. Beide Teile haben das gleiche Vorzeichen wie das Argument.
Beispiele
julia> modf(3.5)
(0.5, 3.0)
julia> modf(-3.5)
(-0.5, -3.0)Base.expm1 — Functionexpm1(x)Berechnet genau $e^x-1$. Es vermeidet den Verlust an Präzision, der bei der direkten Auswertung von exp(x)-1 für kleine Werte von x auftritt.
Beispiele
julia> expm1(1e-16)
1.0e-16
julia> exp(1e-16) - 1
0.0Base.round — Functionround([T,] x, [r::RoundingMode])
round(x, [r::RoundingMode]; digits::Integer=0, base = 10)
round(x, [r::RoundingMode]; sigdigits::Integer, base = 10)Rundet die Zahl x.
Ohne Schlüsselwortargumente wird x auf einen ganzzahligen Wert gerundet, wobei ein Wert vom Typ T zurückgegeben wird, oder vom gleichen Typ wie x, wenn kein T angegeben ist. Ein InexactError wird ausgelöst, wenn der Wert nicht durch T darstellbar ist, ähnlich wie bei convert.
Wenn das Schlüsselwortargument digits angegeben ist, wird auf die angegebene Anzahl von Ziffern nach dem Dezimalpunkt (oder davor, wenn negativ) in der Basis base gerundet.
Wenn das Schlüsselwortargument sigdigits angegeben ist, wird auf die angegebene Anzahl von signifikanten Ziffern in der Basis base gerundet.
Der RoundingMode r steuert die Richtung des Rundens; der Standard ist RoundNearest, das auf die nächste ganze Zahl rundet, wobei bei Gleichständen (Bruchwerte von 0.5) auf die nächste gerade ganze Zahl gerundet wird. Beachten Sie, dass round falsche Ergebnisse liefern kann, wenn der globale Rundungsmodus geändert wird (siehe rounding).
Beim Runden auf einen Fließkommatyp wird auf ganze Zahlen gerundet, die von diesem Typ (und Inf) darstellbar sind, anstatt auf echte ganze Zahlen. Inf wird als eine ulp größer als das floatmax(T) behandelt, um "nächste" zu bestimmen, ähnlich wie bei convert.
Beispiele
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)!!! Hinweis Das Runden auf angegebene Ziffern in Basen, die nicht 2 sind, kann ungenau sein, wenn mit binären Fließkommazahlen gearbeitet wird. Zum Beispiel ist der Float64 Wert, der durch 1.15 dargestellt wird, tatsächlich weniger als 1.15, wird jedoch auf 1.2 gerundet. Zum Beispiel:
julia> x = 1.15
1.15
julia> big(1.15)
1.149999999999999911182158029987476766109466552734375
julia> x < 115//100
true
julia> round(x, digits=1)
1.2
```
# Erweiterungen
Um `round` auf neue numerische Typen zu erweitern, ist es typischerweise ausreichend, `Base.round(x::NewType, r::RoundingMode)` zu definieren.Base.Rounding.RoundingMode — TypeRoundingModeEin Typ, der verwendet wird, um den Rundungsmodus von Gleitkommaoperationen (über die Funktionen rounding/setrounding) zu steuern, oder als optionale Argumente für das Runden auf die nächste ganze Zahl (über die Funktion round).
Derzeit unterstützte Rundungsmodi sind:
RoundNearest(Standard)RoundNearestTiesAwayRoundNearestTiesUpRoundToZeroRoundFromZeroRoundUpRoundDown
RoundFromZero erfordert mindestens Julia 1.9. Frühere Versionen unterstützen RoundFromZero nur für BigFloats.
Base.Rounding.RoundNearest — ConstantRoundNearestDer Standard-Rundungsmodus. Rundet auf die nächste ganze Zahl, wobei bei Gleichständen (Bruchwerte von 0,5) auf die nächste gerade Zahl gerundet wird.
Base.Rounding.RoundNearestTiesAway — ConstantRoundNearestTiesAwayRundet auf die nächste ganze Zahl, wobei bei Gleichständen von null weg gerundet wird (C/C++ round Verhalten).
Base.Rounding.RoundNearestTiesUp — ConstantRoundNearestTiesUpRundet auf die nächste ganze Zahl, wobei bei Gleichständen auf positive Unendlichkeit gerundet wird (Verhalten von Java/JavaScript round).
Base.Rounding.RoundToZero — ConstantBase.Rounding.RoundFromZero — ConstantRoundFromZeroRundet von null weg.
RoundFromZero erfordert mindestens Julia 1.9. Frühere Versionen unterstützen RoundFromZero nur für BigFloats.
Beispiele
julia> BigFloat("1.0000000000000001", 5, RoundFromZero)
1.06Base.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)Gibt den nächstgelegenen ganzzahligen Wert des gleichen Typs wie der komplexe Wert z zurück, wobei bei Gleichständen die angegebenen RoundingModes verwendet werden. Der erste RoundingMode wird zum Runden der reellen Komponenten verwendet, während der zweite zum Runden der imaginären Komponenten verwendet wird.
RoundingModeReal und RoundingModeImaginary standardmäßig auf RoundNearest, das auf die nächste ganze Zahl rundet, wobei Gleichstände (Bruchwerte von 0,5) auf die nächste gerade ganze Zahl gerundet werden.
Beispiele
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.51imBase.ceil — Functionceil([T,] x)
ceil(x; digits::Integer= [, basis = 10])
ceil(x; sigdigits::Integer= [, basis = 10])ceil(x) gibt den nächstgelegenen ganzzahligen Wert des gleichen Typs wie x zurück, der größer oder gleich x ist.
ceil(T, x) konvertiert das Ergebnis in den Typ T und wirft einen InexactError, wenn der gerundete Wert nicht als T darstellbar ist.
Die Schlüsselwörter digits, sigdigits und basis funktionieren wie bei round.
Um ceil für einen neuen Typ zu unterstützen, definiere Base.round(x::NewType, ::RoundingMode{:Up}).
Base.floor — Functionfloor([T,] x)
floor(x; digits::Integer= [, basis = 10])
floor(x; sigdigits::Integer= [, basis = 10])floor(x) gibt den nächstgelegenen ganzzahligen Wert des gleichen Typs wie x zurück, der kleiner oder gleich x ist.
floor(T, x) konvertiert das Ergebnis in den Typ T und wirft einen InexactError, wenn der gerundete Wert nicht als T darstellbar ist.
Die Schlüsselwörter digits, sigdigits und basis funktionieren wie bei round.
Um floor für einen neuen Typ zu unterstützen, definiere Base.round(x::NewType, ::RoundingMode{:Down}).
Base.trunc — Functiontrunc([T,] x)
trunc(x; digits::Integer= [, basis = 10])
trunc(x; sigdigits::Integer= [, basis = 10])trunc(x) gibt den nächstgelegenen ganzzahligen Wert des gleichen Typs wie x zurück, dessen absoluter Wert kleiner oder gleich dem absoluten Wert von x ist.
trunc(T, x) konvertiert das Ergebnis in den Typ T und wirft einen InexactError, wenn der truncierte Wert nicht als T darstellbar ist.
Die Schlüsselwörter digits, sigdigits und basis funktionieren wie bei round.
Um trunc für einen neuen Typ zu unterstützen, definiere Base.round(x::NewType, ::RoundingMode{:ToZero}).
Siehe auch: %, floor, unsigned, unsafe_trunc.
Beispiele
julia> trunc(2.22)
2.0
julia> trunc(-2.22, digits=1)
-2.2
julia> trunc(Int, -2.22)
-2Base.unsafe_trunc — Functionunsafe_trunc(T, x)Gibt den nächstgelegenen ganzzahligen Wert des Typs T zurück, dessen absoluter Wert kleiner oder gleich dem absoluten Wert von x ist. Wenn der Wert nicht durch T darstellbar ist, wird ein willkürlicher Wert zurückgegeben. Siehe auch trunc.
Beispiele
julia> unsafe_trunc(Int, -2.2)
-2
julia> unsafe_trunc(Int, NaN)
-9223372036854775808Base.min — Functionmin(x, y, ...)Gibt das Minimum der Argumente zurück, bezogen auf isless. Wenn eines der Argumente missing ist, wird missing zurückgegeben. Siehe auch die Funktion minimum, um das minimale Element aus einer Sammlung zu entnehmen.
Beispiele
julia> min(2, 5, 1)
1
julia> min(4, missing, 6)
missingBase.max — Functionmax(x, y, ...)Gibt das Maximum der Argumente zurück, bezogen auf isless. Wenn eines der Argumente missing ist, wird missing zurückgegeben. Siehe auch die Funktion maximum, um das maximale Element aus einer Sammlung zu entnehmen.
Beispiele
julia> max(2, 5, 1)
5
julia> max(5, missing, 6)
missingBase.minmax — Functionminmax(x, y)Gibt (min(x,y), max(x,y)) zurück.
Siehe auch extrema, das (minimum(x), maximum(x)) zurückgibt.
Beispiele
julia> minmax('c','b')
('b', 'c')Base.clamp — Functionclamp(x, lo, hi)Gibt x zurück, wenn lo <= x <= hi. Wenn x > hi, wird hi zurückgegeben. Wenn x < lo, wird lo zurückgegeben. Die Argumente werden auf einen gemeinsamen Typ befördert.
missing als erstes Argument erfordert mindestens Julia 1.3.
Beispiele
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) # ein Beispiel, bei dem lo > hi
3-element Vector{Int64}:
6
6
10clamp(x, T)::TBegrenze x zwischen typemin(T) und typemax(T) und konvertiere das Ergebnis in den Typ T.
Siehe auch trunc.
Beispiele
julia> clamp(200, Int8)
127
julia> clamp(-200, Int8)
-128
julia> trunc(Int, 4pi^2)
39clamp(x::Integer, r::AbstractUnitRange)Klemme x so, dass es im Bereich r liegt.
Diese Methode erfordert mindestens Julia 1.6.
Base.clamp! — Functionclamp!(array::AbstractArray, lo, hi)Werte in array auf den angegebenen Bereich beschränken, in-place. Siehe auch clamp.
missing-Einträge in array erfordern mindestens Julia 1.3.
Beispiele
julia> row = collect(-4:4)';
julia> clamp!(row, 0, Inf)
1×9 adjoint(::Vector{Int64}) mit 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.0Base.abs — Functionabs(x)Der Betrag von x.
Wenn abs auf vorzeichenbehaftete Ganzzahlen angewendet wird, kann ein Überlauf auftreten, der zur Rückgabe eines negativen Wertes führt. Dieser Überlauf tritt nur auf, wenn abs auf den minimal darstellbaren Wert einer vorzeichenbehafteten Ganzzahl angewendet wird. Das heißt, wenn x == typemin(typeof(x)), dann ist abs(x) == x < 0, nicht -x, wie man erwarten könnte.
Siehe auch: abs2, unsigned, sign.
Beispiele
julia> abs(-3)
3
julia> abs(1 + im)
1.4142135623730951
julia> abs.(Int8[-128 -127 -126 0 126 127]) # Überlauf bei typemin(Int8)
1×6 Matrix{Int8}:
-128 127 126 0 126 127
julia> maximum(abs, [1, -2, 3, -4])
4Base.Checked — ModuleÜberprüftDas Überprüft-Modul bietet arithmetische Funktionen für die integrierten vorzeichenbehafteten und vorzeichenlosen Ganzzahltypen, die einen Fehler auslösen, wenn ein Überlauf auftritt. Sie sind benannt wie checked_sub, checked_div usw. Darüber hinaus geben add_with_overflow, sub_with_overflow, mul_with_overflow sowohl die nicht überprüften Ergebnisse als auch einen booleschen Wert zurück, der das Vorhandensein eines Überlaufs anzeigt.
Base.Checked.checked_abs — FunctionBase.checked_abs(x)Berechnet abs(x) und überprüft auf Überlauf-Fehler, wo dies zutrifft. Zum Beispiel können standardmäßige vorzeichenbehaftete Ganzzahlen im Zweierkomplement (z. B. Int) abs(typemin(Int)) nicht darstellen, was zu einem Überlauf führt.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_neg — FunctionBase.checked_neg(x)Berechnet -x und überprüft auf Überlauf-Fehler, wo dies zutrifft. Zum Beispiel können standardmäßige vorzeichenbehaftete Ganzzahlen im Zweierkomplement (z. B. Int) -typemin(Int) nicht darstellen, was zu einem Überlauf führt.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_add — FunctionBase.checked_add(x, y)Berechnet x+y und überprüft auf Überlauf-Fehler, wo zutreffend.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_sub — FunctionBase.checked_sub(x, y)Berechnet x-y und überprüft auf Überlauf-Fehler, wo zutreffend.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_mul — FunctionBase.checked_mul(x, y)Berechnet x*y und überprüft auf Überlauf-Fehler, wo zutreffend.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_div — FunctionBase.checked_div(x, y)Berechnet div(x,y) und überprüft auf Überlauf-Fehler, wo dies zutrifft.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_rem — FunctionBase.checked_rem(x, y)Berechnet x%y und überprüft auf Überlauf-Fehler, wo zutreffend.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_fld — FunctionBase.checked_fld(x, y)Berechnet fld(x,y) und überprüft auf Überlauf-Fehler, wo dies zutrifft.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_mod — FunctionBase.checked_mod(x, y)Berechnet mod(x,y) und überprüft auf Überlauf-Fehler, wo zutreffend.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_cld — FunctionBase.checked_cld(x, y)Berechnet cld(x,y) und überprüft auf Überlauf-Fehler, wo dies zutrifft.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.checked_pow — FunctionBase.checked_pow(x, y)Berechnet ^(x,y) und überprüft auf Überlauf-Fehler, wo zutreffend.
Der Überlaufschutz kann eine spürbare Leistungseinbuße zur Folge haben.
Base.Checked.add_with_overflow — FunctionBase.add_with_overflow(x, y) -> (r, f)Berechnet r = x+y, wobei das Flag f angibt, ob ein Überlauf aufgetreten ist.
Base.Checked.sub_with_overflow — FunctionBase.sub_with_overflow(x, y) -> (r, f)Berechnet r = x-y, wobei das Flag f angibt, ob ein Überlauf aufgetreten ist.
Base.Checked.mul_with_overflow — FunctionBase.mul_with_overflow(x, y) -> (r, f)Berechnet r = x*y, wobei das Flag f angibt, ob ein Überlauf aufgetreten ist.
Base.abs2 — Functionabs2(x)Quadratischer Absolutwert von x.
Dies kann schneller sein als abs(x)^2, insbesondere für komplexe Zahlen, bei denen abs(x) eine Quadratwurzel über hypot erfordert.
Beispiele
julia> abs2(-3)
9
julia> abs2(3.0 + 4.0im)
25.0
julia> sum(abs2, [1+2im, 3+4im]) # LinearAlgebra.norm(x)^2
30Base.copysign — Functioncopysign(x, y) -> zGibt z zurück, das die Größe von x und das gleiche Vorzeichen wie y hat.
Beispiele
julia> copysign(1, -2)
-1
julia> copysign(-1, 2)
1Base.sign — Functionsign(x)Gibt null zurück, wenn x==0 und $x/|x|$ andernfalls (d.h. ±1 für reelles x).
Siehe auch signbit, zero, copysign, flipsign.
Beispiele
julia> sign(-4.0)
-1.0
julia> sign(99)
1
julia> sign(-0.0)
-0.0
julia> sign(0 + im)
0.0 + 1.0imBase.signbit — Functionsignbit(x)Gibt true zurück, wenn der Wert des Vorzeichens von x negativ ist, andernfalls false.
Beispiele
julia> signbit(-4)
true
julia> signbit(5)
false
julia> signbit(5.5)
false
julia> signbit(-4.1)
trueBase.flipsign — Functionflipsign(x, y)Gibt x mit umgekehrtem Vorzeichen zurück, wenn y negativ ist. Zum Beispiel abs(x) = flipsign(x,x).
Beispiele
julia> flipsign(5, 3)
5
julia> flipsign(5, -3)
-5Base.sqrt — Methodsqrt(x)Gibt $\sqrt{x}$ zurück.
Wirft DomainError für negative Real Argumente. Verwenden Sie stattdessen komplexe negative Argumente. Beachten Sie, dass sqrt einen Zweigschnitt entlang der negativen reellen Achse hat.
Der Präfixoperator √ ist äquivalent zu sqrt.
Siehe auch: hypot.
Beispiele
julia> sqrt(big(81))
9.0
julia> sqrt(big(-81))
ERROR: DomainError mit -81.0:
NaN-Ergebnis für nicht-NaN-Eingabe.
Stacktrace:
[1] sqrt(::BigFloat) at ./mpfr.jl:501
[...]
julia> sqrt(big(complex(-81)))
0.0 + 9.0im
julia> sqrt(-81 - 0.0im) # -0.0im liegt unter dem Zweigschnitt
0.0 - 9.0im
julia> .√(1:4)
4-element Vector{Float64}:
1.0
1.4142135623730951
1.7320508075688772
2.0Base.isqrt — Functionisqrt(n::Integer)Ganzzahlige Quadratwurzel: die größte ganze Zahl m, so dass m*m <= n.
julia> isqrt(5)
2Base.Math.cbrt — Methodcbrt(x::Real)Gibt die Kubikwurzel von x zurück, d.h. $x^{1/3}$. Negative Werte werden akzeptiert (es wird die negative reelle Wurzel zurückgegeben, wenn $x < 0$).
Der Präfixoperator ∛ ist äquivalent zu cbrt.
Beispiele
julia> cbrt(big(27))
3.0
julia> cbrt(big(-27))
-3.0Base.real — Functionreal(z)Gibt den Realteil der komplexen Zahl z zurück.
Siehe auch: imag, reim, complex, isreal, Real.
Beispiele
julia> real(1 + 3im)
1real(T::Type)Gibt den Typ zurück, der den Realteil eines Wertes des Typs T darstellt. z.B.: für T == Complex{R} gibt R zurück. Entspricht typeof(real(zero(T))).
Beispiele
julia> real(Complex{Int})
Int64
julia> real(Float64)
Float64real(A::AbstractArray)Gibt ein Array zurück, das den Realteil jedes Eintrags im Array A enthält.
Entspricht real.(A), mit dem Unterschied, dass wenn eltype(A) <: Real A ohne Kopieren zurückgegeben wird und dass wenn A null Dimensionen hat, ein 0-dimensionales Array zurückgegeben wird (anstatt eines Skalars).
Beispiele
julia> real([1, 2im, 3 + 4im])
3-element Vector{Int64}:
1
0
3
julia> real(fill(2 - im))
0-dimensional Array{Int64, 0}:
2Base.imag — Functionimag(z)Gibt den Imaginärteil der komplexen Zahl z zurück.
Siehe auch: conj, reim, adjoint, angle.
Beispiele
julia> imag(1 + 3im)
3imag(A::AbstractArray)Gibt ein Array zurück, das den Imaginärteil jedes Eintrags im Array A enthält.
Entspricht imag.(A), es sei denn, A hat null Dimensionen, in diesem Fall wird ein 0-dimensionales Array zurückgegeben (anstatt eines Skalars).
Beispiele
julia> imag([1, 2im, 3 + 4im])
3-element Vector{Int64}:
0
2
4
julia> imag(fill(2 - im))
0-dimensional Array{Int64, 0}:
-1Base.reim — Functionreim(z)Gibt ein Tupel der reellen und imaginären Teile der komplexen Zahl z zurück.
Beispiele
julia> reim(1 + 3im)
(1, 3)reim(A::AbstractArray)Gibt ein Tupel von zwei Arrays zurück, die jeweils den Real- und den Imaginärteil jedes Eintrags in A enthalten.
Entspricht (real.(A), imag.(A)), es sei denn, eltype(A) <: Real, in diesem Fall wird A ohne Kopieren zurückgegeben, um den Realteil darzustellen, und wenn A null Dimensionen hat, wird ein 0-dimensionales Array zurückgegeben (anstatt eines Skalars).
Beispiele
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)Berechne das komplexe Konjugat einer komplexen Zahl z.
Beispiele
julia> conj(1 + 3im)
1 - 3imconj(A::AbstractArray)Gibt ein Array zurück, das den komplexen Konjugierten jedes Eintrags im Array A enthält.
Entspricht conj.(A), mit dem Unterschied, dass wenn eltype(A) <: Real, A ohne Kopie zurückgegeben wird, und dass wenn A null Dimensionen hat, ein 0-dimensionales Array zurückgegeben wird (anstatt eines Skalars).
Beispiele
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 + 1imBase.angle — Functionangle(z)Berechnet den Phasenwinkel in Bogenmaß einer komplexen Zahl z.
Gibt eine Zahl -pi ≤ angle(z) ≤ pi zurück und ist somit entlang der negativen reellen Achse diskontinuierlich.
Siehe auch: atan, cis, rad2deg.
Beispiele
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.0Base.cis — Functioncis(x)Effizientere Methode für exp(im*x) unter Verwendung der Eulerschen Formel: $\cos(x) + i \sin(x) = \exp(i x)$.
Siehe auch cispi, sincos, exp, angle.
Beispiele
julia> cis(π) ≈ -1
trueBase.cispi — Functioncispi(x)Genaueres Verfahren für cis(pi*x) (insbesondere für große x).
Siehe auch cis, sincospi, exp, angle.
Beispiele
julia> cispi(10000)
1.0 + 0.0im
julia> cispi(0.25 + 1im)
0.030556854645954562 + 0.03055685464595456imDiese Funktion erfordert Julia 1.6 oder höher.
Base.binomial — Functionbinomial(n::Integer, k::Integer)Der binomiale Koeffizient $\binom{n}{k}$ ist der Koeffizient des $k$-ten Terms in der polynomialen Expansion von $(1+x)^n$.
Wenn $n$ nicht negativ ist, dann ist es die Anzahl der Möglichkeiten, k aus n Elementen auszuwählen:
\[\binom{n}{k} = \frac{n!}{k! (n-k)!}\]
wobei $n!$ die factorial Funktion ist.
Wenn $n$ negativ ist, dann wird es in Bezug auf die Identität definiert
\[\binom{n}{k} = (-1)^k \binom{k-n-1}{k}\]
Siehe auch factorial.
Beispiele
julia> binomial(5, 3)
10
julia> factorial(5) ÷ (factorial(5-3) * factorial(3))
10
julia> binomial(-5, 3)
-35Externe Links
- Binomialkoeffizient auf Wikipedia.
binomial(x::Number, k::Integer)Der verallgemeinerte binomiale Koeffizient, definiert für k ≥ 0 durch das Polynom
\[\frac{1}{k!} \prod_{j=0}^{k-1} (x - j)\]
Wenn k < 0, gibt es null zurück.
Im Fall von ganzzahligen x entspricht dies dem gewöhnlichen ganzzahligen binomialen Koeffizienten
\[\binom{n}{k} = \frac{n!}{k! (n-k)!}\]
Weitere Verallgemeinerungen für nicht-ganzzahlige k sind mathematisch möglich, beinhalten jedoch die Gammafunktion und/oder die Betafunktion, die nicht von der Julia-Standardbibliothek bereitgestellt werden, aber in externen Paketen wie SpecialFunctions.jl verfügbar sind.
Externe Links
- Binomialkoeffizient auf Wikipedia.
Base.factorial — Functionfactorial(n::Integer)Fakultät von n. Wenn n eine Integer ist, wird die Fakultät als Ganzzahl (mindestens 64 Bit) berechnet. Beachten Sie, dass dies überlaufen kann, wenn n nicht klein ist, aber Sie können factorial(big(n)) verwenden, um das Ergebnis genau in beliebiger Präzision zu berechnen.
Siehe auch binomial.
Beispiele
julia> factorial(6)
720
julia> factorial(21)
ERROR: OverflowError: 21 ist zu groß, um in der Tabelle nachgeschlagen zu werden; ziehen Sie in Betracht, stattdessen `factorial(big(21))` zu verwenden
Stacktrace:
[...]
julia> factorial(big(21))
51090942171709440000Externe Links
- Fakultät auf Wikipedia.
Base.gcd — Functiongcd(x, y...)Größter gemeinsamer (positiver) Teiler (oder null, wenn alle Argumente null sind). Die Argumente können ganze und rationale Zahlen sein.
Rationale Argumente erfordern Julia 1.4 oder höher.
Beispiele
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)
5Base.lcm — Functionlcm(x, y...)Kleinste gemeinsame (positive) Vielfache (oder null, wenn ein Argument null ist). Die Argumente können ganze und rationale Zahlen sein.
Rationale Argumente erfordern Julia 1.4 oder höher.
Beispiele
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)
105Base.gcdx — Functiongcdx(a, b)Berechnet den größten gemeinsamen (positiven) Teiler von a und b sowie deren Bézout-Koeffizienten, d.h. die ganzzahligen Koeffizienten u und v, die die Gleichung $ua+vb = d = gcd(a, b)$ erfüllen. $gcdx(a, b)$ gibt $(d, u, v)$ zurück.
Die Argumente können ganze und rationale Zahlen sein.
Rationale Argumente erfordern Julia 1.4 oder höher.
Beispiele
julia> gcdx(12, 42)
(6, -3, 1)
julia> gcdx(240, 46)
(2, -9, 47)Bézout-Koeffizienten sind nicht eindeutig definiert. gcdx gibt die minimalen Bézout-Koeffizienten zurück, die durch den erweiterten euklidischen Algorithmus berechnet werden. (Ref: D. Knuth, TAoCP, 2/e, S. 325, Algorithmus X.) Für vorzeichenbehaftete ganze Zahlen sind diese Koeffizienten u und v minimal im Sinne, dass $|u| < |b/d|$ und $|v| < |a/d|$. Darüber hinaus werden die Vorzeichen von u und v so gewählt, dass d positiv ist. Für vorzeichenlose ganze Zahlen könnten die Koeffizienten u und v nahe ihrem typemax liegen, und die Identität gilt dann nur über die Modulo-Arithmetik der vorzeichenlosen ganzen Zahlen.
Base.ispow2 — Functionispow2(n::Number) -> BoolÜberprüfen, ob n eine ganze Potenz von zwei ist.
Siehe auch count_ones, prevpow, nextpow.
Beispiele
julia> ispow2(4)
true
julia> ispow2(5)
false
julia> ispow2(4.5)
false
julia> ispow2(0.25)
true
julia> ispow2(1//8)
trueUnterstützung für nicht-Integer Argumente wurde in Julia 1.6 hinzugefügt.
Base.nextpow — Functionnextpow(a, x)Die kleinste a^n, die nicht kleiner als x ist, wobei n eine nicht-negative ganze Zahl ist. a muss größer als 1 sein, und x muss größer als 0 sein.
Siehe auch prevpow.
Beispiele
julia> nextpow(2, 7)
8
julia> nextpow(2, 9)
16
julia> nextpow(5, 20)
25
julia> nextpow(4, 16)
16Base.prevpow — Functionprevpow(a, x)Die größte a^n, die nicht größer als x ist, wobei n eine nicht-negative ganze Zahl ist. a muss größer als 1 sein, und x darf nicht kleiner als 1 sein.
Beispiele
julia> prevpow(2, 7)
4
julia> prevpow(2, 9)
8
julia> prevpow(5, 20)
5
julia> prevpow(4, 16)
16Base.nextprod — Functionnextprod(factors::Union{Tuple,AbstractVector}, n)Nächste ganze Zahl größer oder gleich n, die als $\prod k_i^{p_i}$ für ganze Zahlen $p_1$, $p_2$, usw. geschrieben werden kann, für Faktoren $k_i$ in factors.
Beispiele
julia> nextprod((2, 3), 105)
108
julia> 2^2 * 3^3
108Die Methode, die ein Tuple akzeptiert, erfordert Julia 1.6 oder höher.
Base.invmod — Functioninvmod(n::Integer, m::Integer)Nehmen Sie das Inverse von n modulo m: y, so dass $n y = 1 \pmod m$, und $div(y,m) = 0$. Dies wird einen Fehler auslösen, wenn $m = 0$ oder wenn $gcd(n,m) \neq 1$.
Beispiele
julia> invmod(2, 5)
3
julia> invmod(2, 3)
2
julia> invmod(5, 6)
5invmod(n::Integer, T) where {T <: Base.BitInteger}
invmod(n::T) where {T <: Base.BitInteger}Berechne das modulare Inverse von n im ganzzahligen Ring vom Typ T, d.h. modulo 2^N, wobei N = 8*sizeof(T) (z.B. N = 32 für Int32). Mit anderen Worten erfüllen diese Methoden die folgenden Identitäten:
n * invmod(n) == 1
(n * invmod(n, T)) % T == 1
(n % T) * invmod(n, T) == 1Beachte, dass * hier die modulare Multiplikation im ganzzahligen Ring T ist.
Die Angabe des Modulus, der durch einen ganzzahligen Typ impliziert wird, als expliziter Wert ist oft unpraktisch, da der Modulus definitionsgemäß zu groß ist, um durch den Typ dargestellt zu werden.
Das modulare Inverse wird viel effizienter berechnet als der allgemeine Fall unter Verwendung des in https://arxiv.org/pdf/2204.04342.pdf beschriebenen Algorithmus.
Die Methoden invmod(n) und invmod(n, T) erfordern Julia 1.11 oder höher.
```
Base.powermod — Functionpowermod(x::Integer, p::Integer, m)Berechne $x^p \pmod m$.
Beispiele
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)
11Base.ndigits — Functionndigits(n::Integer; base::Integer=10, pad::Integer=1)Berechne die Anzahl der Ziffern in der Ganzzahl n, die in der Basis base geschrieben ist (base darf nicht in [-1, 0, 1] sein), optional mit Nullen auf eine bestimmte Größe aufgepolstert (das Ergebnis wird niemals kleiner als pad sein).
Siehe auch digits, count_ones.
Beispiele
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)
3Base.add_sum — FunctionBase.add_sum(x, y)Der Reduktionsoperator, der in sum verwendet wird. Der Hauptunterschied zu + besteht darin, dass kleine Ganzzahlen zu Int/UInt befördert werden.
Base.widemul — Functionwidemul(x, y)Multipliziere x und y und gebe das Ergebnis als einen größeren Typ zurück.
Siehe auch promote, Base.add_sum.
Beispiele
julia> widemul(Float32(3.0), 4.0) isa BigFloat
true
julia> typemax(Int8) * typemax(Int8)
1
julia> widemul(typemax(Int8), typemax(Int8)) # == 127^2
16129Base.Math.evalpoly — Functionevalpoly(x, p)Bewerten Sie das Polynom $\sum_k x^{k-1} p[k]$ für die Koeffizienten p[1], p[2], ...; das heißt, die Koeffizienten sind in aufsteigender Reihenfolge nach der Potenz von x angegeben. Schleifen werden zur Compile-Zeit entrollt, wenn die Anzahl der Koeffizienten statisch bekannt ist, d.h. wenn p ein Tuple ist. Diese Funktion generiert effizienten Code unter Verwendung der Horner-Methode, wenn x reell ist, oder unter Verwendung eines Goertzel-ähnlichen [DK62] Algorithmus, wenn x komplex ist.
Diese Funktion erfordert Julia 1.4 oder später.
Beispiele
julia> evalpoly(2, (1, 2, 3))
17Base.Math.@evalpoly — Macro@evalpoly(z, c...)Bewerten Sie das Polynom $\sum_k z^{k-1} c[k]$ für die Koeffizienten c[1], c[2], ...; das heißt, die Koeffizienten sind in aufsteigender Reihenfolge nach der Potenz von z angegeben. Dieses Makro erweitert sich zu effizientem Inline-Code, der entweder die Horner-Methode oder, für komplexe z, einen effizienteren Goertzel-ähnlichen Algorithmus verwendet.
Siehe auch evalpoly.
Beispiele
julia> @evalpoly(3, 1, 0, 1)
10
julia> @evalpoly(2, 1, 0, 1)
5
julia> @evalpoly(2, 1, 1, 1)
7Base.FastMath.@fastmath — Macro@fastmath exprFühren Sie eine transformierte Version des Ausdrucks aus, die Funktionen aufruft, die die strengen IEEE-Semantiken verletzen können. Dies ermöglicht die schnellstmögliche Ausführung, aber die Ergebnisse sind undefiniert – seien Sie vorsichtig, wenn Sie dies tun, da es die numerischen Ergebnisse ändern kann.
Dies setzt die LLVM Fast-Math-Flags und entspricht der Option -ffast-math in clang. Siehe die Hinweise zu Leistungsannotationen für weitere Details.
Beispiele
julia> @fastmath 1+2
3
julia> @fastmath(sin(3))
0.1411200080598672Customizable binary operators
Einige Unicode-Zeichen können verwendet werden, um neue binäre Operatoren zu definieren, die die Infix-Notation unterstützen. Zum Beispiel ⊗(x,y) = kron(x,y) definiert die ⊗ (otimes) Funktion als das Kronecker-Produkt, und man kann sie als binären Operator mit Infix-Syntax aufrufen: C = A ⊗ B sowie mit der üblichen Präfix-Syntax C = ⊗(A,B).
Andere Zeichen, die solche Erweiterungen unterstützen, sind \odot ⊙ und \oplus ⊕
Die vollständige Liste befindet sich im Parser-Code: https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm
Diejenigen, die wie * (in Bezug auf die Priorität) geparst werden, umfassen * / ÷ % & ⋅ ∘ × |\\| ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇ ⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻ ⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗ und diejenigen, die wie + geparst werden, umfassen + - |\|| ⊕ ⊖ ⊞ ⊟ |++| ∪ ∨ ⊔ ± ∓ ∔ ∸ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⟇ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦ ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣ Es gibt viele andere, die mit Pfeilen, Vergleichen und Potenzen verbunden sind.
- DK62Donald Knuth, Art of Computer Programming, Volume 2: Seminumerical Algorithms, Sec. 4.6.4.