Przejdź do treści
Przewodnik po Varlig
Strona główna Varlig

Zaawansowana matematyka: możliwości i ograniczenia

Ta strona podsumowuje zaawansowaną matematykę w Varlig Calc: listy, wektory i macierze, liczby zespolone, sumy i iloczyny, rozwiązywanie równań oraz rachunek różniczkowy i całkowy. Dla każdej funkcji opisuje działanie, przyjmowane dane, dokładność wyników i ograniczenia. Zajrzyj tu, gdy wynik Cię zaskoczy.

Wprowadzenia z większą liczbą przykładów znajdziesz w rozdziałach: Listy i statystyka, Wektory i macierze, Liczby zespolone oraz Sumowanie, rozwiązywanie równań i rachunek różniczkowy i całkowy.

W skrócie

Funkcja Przykład Wynik
Lista [1, 2+3, 4*2] [1, 5, 8]
Element listy [10, 20, 30][1] 20
Element listy zagnieżdżonej [[1,2],[3,4]][1][0] 3
Suma wielkości sum([1 kg, 500 g]) 1.5 kg
Statystyka average([1,2,3]), median([5,1,3]) 2, 3
Zakres malejący range(5, 1, -2) [5, 3, 1]
Dodawanie list [1,2] + [3,4] [4, 6]
Iloczyn macierzy [[1,2],[3,4]] * [[1,0],[0,1]] [[1, 2], [3, 4]]
Macierz odwrotna inverse([[1,2],[3,4]]) [[-2, 1], [1.5, -0.5]]
Wyznacznik det([[1,2],[3,4]]) -2
Transpozycja transpose([[1,2],[3,4]]) [[1, 3], [2, 4]]
Układ równań liniowych solve_system([[2,1],[1,2]], [34,29]) [13, 8]
Arytmetyka liczb zespolonych (2+3i) * (2-3i) 13
Zespolony pierwiastek kwadratowy sqrt(complex(-4,0)) 2i
Najczęstsza wartość mode([1,2,2,3]) 2
Percentyl percentile([1,2,3,4],25) 1.75
Odchylenie standardowe populacji population_stddev([1,2,3,4]) 1.1180339887
Suma w zadanym zakresie sum(k^2, k, 1, 10) 385
Iloczyn w zadanym zakresie product(k, k, 1, 5) 120
Dokładne rozwiązywanie równania solve(x^2 - 5x + 6 = 0) [2, 3]
Rozwiązywanie równania w przedziale solve(x^2 = 4, x, 0, 3) 2
Pochodna symboliczna differentiate(sin(x), x) cos(x)
Pochodna w punkcie derivative(x^3, x, 2) 12
Całka oznaczona integrate(x^2, x, 0, 3) 9

Listy, macierze i liczby zespolone są zwykłymi wartościami. Możesz nadawać im nazwy i przekazywać je do własnych funkcji. Po zmianie wcześniejszego wiersza są przeliczane ponownie.

calc
squares(n) = sum(k^2, k, 1, n)
squares(3) daje 14
first(items) = items[0]
first([10, 20]) daje 10
root(y) = solve(x^2 = y, x, 0, 10)
root(9) daje 3

Co gwarantuje silnik obliczeniowy

Wszystko na tej stronie opiera się na jednej zasadzie: obliczenie daje wynik, którego poprawność Varlig może zagwarantować, albo błąd wyjaśniający przyczynę. Nigdy nie zastępuje dokładnego obliczenia liczbą, która tylko wygląda wiarygodnie.

Dokładność wyniku

Sposób obliczania Zakres zastosowania
Dokładne ułamki Współczynniki równań i pierwiastek równania liniowego; pierwiastki równania kwadratowego, którego wyróżnik jest kwadratem liczby całkowitej; macierzowe +, -, *, mnożenie przez liczbę, transpose, det, inverse, rank i solve_system; median, mode, modes, percentile, quartile i wszystkie trzy warianty wariancji
Dziesiętny pierwiastek kwadratowy stddev, sample_stddev, population_stddev oraz pierwiastki pozostałych równań kwadratowych
Binarna arytmetyka zmiennoprzecinkowa eigenvalues, qr, lu, svd, integrate i czteroargumentowe solve

Dokładny znaczy dokładny: od odczytania wiersza do wyświetlenia wyniku nic nie jest zaokrąglane, więc wynik zachowuje dokładność po nadaniu nazwy, zapisaniu i ponownym użyciu. Wynik przybliżony ma ograniczoną precyzję dziesiętną, tak jak wynik sqrt. Nie jest poprawnie zaokrąglony do ostatniej wyświetlanej cyfry, dlatego porównanie dwóch przybliżeń za pomocą == nie jest wiarygodnym testem — solve(x^2 - 2 = 0) i sqrt(2) wyświetlają 1.4142135624, ale nie są równe.

Jeden wynik nigdy nie łączy obu rodzajów. Jeśli wyróżnik równania kwadratowego nie jest kwadratem liczby wymiernej, oba pierwiastki są przybliżone.

Jednostki

Operacja Reguła
Macierze Tylko liczby bez jednostek; jednostki, kwoty pieniężne i elementy zespolone są odrzucane
Równania Tylko liczby bez jednostek, po obu stronach
median, mode, modes, percentile, quartile, stddev, population_stddev Jeden spójny wymiar lub liczby bez jednostek. Zgodne jednostki są przeliczane na jednostkę pierwszej wartości, którą zachowuje wynik
variance, sample_variance, population_variance Tylko liczby bez jednostek: wariancja podnosi obserwacje do kwadratu, a jednostki nie są przy tym zachowywane

Łączenie wartości z jednostkami i wartości bez jednostek powoduje błąd, zamiast po cichu odczytywać same liczby. Istnieje jeden od dawna stosowany wyjątek: samo 0 jest traktowane jako zero w jednostce pozostałych wartości.

Co jest odrzucane

Żaden z poniższych przypadków nie daje liczby ani zwykłego tekstu. Każdy powoduje błąd wskazujący, czego nie da się obliczyć, i — jeśli istnieje — obsługiwaną formę zapisu:

  • Równanie wielomianowe stopnia wyższego niż 2, równanie niewielomianowe, niewiadoma w dzielniku lub wykładniku, dwie nazwy bez przypisanych wartości, równanie bez niewiadomej albo równanie zawierające jednostki lub kwoty pieniężne. Każdy z tych przypadków odsyła do numerycznej funkcji solve z czterema argumentami.
  • Równanie bez pierwiastka rzeczywistego — zamiast zwracać zespolony — oraz równanie spełnione przez każdą wartość — zamiast wybierać jedną z nich.
  • Działanie na macierzach o niezgodnych wymiarach lub wymagające macierzy kwadratowej, odwracanie macierzy osobliwej albo element, który nie jest liczbą bez jednostki.
  • mode, gdy żadna wartość się nie powtarza lub kilka występuje równie często, percentyl spoza zakresu od 0 do 100, kwartyl spoza zakresu od 0 do 4 oraz każda statystyka pustej listy inna niż sum, product i count.

Celowo nie są obsługiwane: przekształcenia symboliczne poza zebraniem współczynników wielomianu, układy równań nieliniowych, zespolone pierwiastki równań rzeczywistych, macierze zawierające jednostki lub kwoty pieniężne, całkowanie symboliczne i kreślenie wykresów.

Same komunikaty znajdziesz w rozdziale Błędy, diagnostyka i ograniczenia.

Zapisywanie list i funkcji matematycznych

  • Przecinki oddzielają elementy i argumenty. Przecinek ze spacją zawsze jest separatorem, a przecinek z dokładnie trzema następującymi po nim cyframi grupuje tysiące, więc [1,200, 1,800] zawiera dwa elementy. Bez spacji każdy przecinek jest separatorem, jak w [12,-51,4]. Gdy możliwe są obie interpretacje, np. w [1,234], komunikat błędu pokazuje oba sposoby zapisu. Część ułamkową liczby oddzielaj kropką.
  • Macierze to listy wierszy, np. [[1,2],[3,4]]. Skrócony zapis ze średnikami, taki jak [1,2;3,4], nie jest obsługiwany.
  • Indeksy zaczynają się od 0 i muszą być liczbami całkowitymi nieujemnymi. Indeks wykraczający poza listę powoduje błąd; nie wraca do początku ani nie jest zmniejszany do dozwolonej wartości.
  • Liczba argumentów jest sprawdzana. sqrt(4,9) powoduje błąd zamiast zgadywania intencji.

Listy i statystyka

Listę przyjmują funkcje: length lub count, sum, product, average lub mean, median, min, max, mode i modes, percentile i quartile oraz funkcje miar rozproszenia: variance, sample_variance, population_variance, stddev, sample_stddev i population_stddev.

  • mode zwraca wynik tylko wtedy, gdy jedna wartość występuje częściej niż każda inna. Remis oraz lista bez powtórzeń powodują błąd wskazujący modes, median lub average. modes zwraca wszystkie wartości o największej częstości.
  • percentile(list, rank) przyjmuje rangę od 0 do 100 i interpoluje liniowo między dwiema najbliższymi pozycjami, zgodnie z definicją uwzględniającą oba krańce: 50. percentyl to mediana, a 0. i 100. to najmniejsza i największa wartość. quartile(list, k) przyjmuje całkowite k od 0 do 4 i odpowiada percentile(list, 25k).
  • variance i stddev są miarami dla próby: dzielą przez n - 1 i wymagają dwóch wartości. population_variance i population_stddev dzielą przez n i wymagają jednej. sample_variance i sample_stddev to dłuższe nazwy tych samych funkcji dla próby.
  • Dla pustej listy sum wynosi 0, product wynosi 1, a count wynosi 0. Pozostałe statystyki pustej listy powodują błędy.
  • Dwie listy tej samej długości są dodawane i odejmowane element po elemencie. Listę można pomnożyć lub podzielić przez liczbę, a dwie listy porównać za pomocą ==.
  • range(start, end, step) uwzględnia oba końce zakresu. Krok jest opcjonalny.
  • dot(a, b) oblicza iloczyn skalarny dwóch wektorów rzeczywistych.
calc
spend = [420, 385, 510, 460] daje [420, 385, 510, 460]
sum(spend) daje 1,775
average(spend) daje 443.75
median(spend) daje 440
spend[0] daje 420
spend * 1.1 daje [462, 423.5, 561, 506]
range(0, 1, 0.25) daje [0, 0.25, 0.5, 0.75, 1]

Przekształcanie list

Wywołanie Wynik Działanie
sort([3,1,2]) [1, 2, 3] Sortuje liczby bez jednostek rosnąco; równe elementy zachowują kolejność
reverse([1,2,3]) [3, 2, 1] Odwraca dowolną listę
unique([3,1,3,2]) [3, 1, 2] Zachowuje pierwsze wystąpienie każdej wartości; elementy muszą być identyczne, także pod względem jednostek
slice([10,20,30,40], 1, 3) [20, 30] Pobiera elementy od indeksu początkowego do końcowego, bez elementu o indeksie końcowym
map(x^2, x, [1,2,3]) [1, 4, 9] Oblicza wyrażenie dla każdego elementu
filter(x > 1, x, [1,2,3]) [2, 3] Zachowuje elementy, dla których warunek jest prawdziwy
variance([1,2,3]) 1 Dokładna wariancja próby, z dzieleniem przez liczbę elementów pomniejszoną o jeden
  • slice wymaga liczb całkowitych spełniających 0 ≤ start ≤ end ≤ długość listy. Inne granice powodują błąd.
  • variance wymaga co najmniej dwóch liczb bez jednostek.
  • map i filter przyjmują najpierw wyrażenie, potem nazwę używaną dla każdego elementu, a na końcu listę. Nazwa obowiązuje tylko wewnątrz wywołania, więc nie zmienia nazwy zdefiniowanej gdzie indziej. Wyrażenie w filter musi dawać true lub false.

Wektory i macierze

Wektory są płaskimi listami, a macierze — listami wierszy. Macierze muszą być prostokątne, zawierać liczby rzeczywiste bez jednostek i mieć od 1 do 32 wierszy oraz kolumn.

Funkcja Działanie
A * B Iloczyn macierzy; liczba kolumn A musi być równa liczbie wierszy B
transpose(A) Zamienia wiersze z kolumnami
shape(A) [rows, columns]
identity(n) Macierz jednostkowa o wymiarach n na n
trace(A) Suma elementów przekątnej macierzy kwadratowej
det(A) Wyznacznik macierzy kwadratowej
inverse(A) Odwrotność macierzy kwadratowej; macierz osobliwa powoduje błąd
rank(A) Rząd dowolnej macierzy prostokątnej, obliczany metodą dokładnej eliminacji
dot(a, b) Iloczyn skalarny dwóch wektorów tej samej długości
cross(a, b) Iloczyn wektorowy dwóch wektorów trójelementowych
solve_system(A, b) Rozwiązuje A*x = b dla macierzy kwadratowej A i płaskiego wektora b
eigenvalues(A) Wartości własne rzeczywistej macierzy kwadratowej, w tym pary zespolone, bez ustalonej kolejności
qr(A) [Q, R], gdzie Q*R jest w przybliżeniu równe A
lu(A) [P, L, U], gdzie P*A jest w przybliżeniu równe L*U; tylko macierze kwadratowe
svd(A) [U, s, Vt], gdzie s jest płaską listą wartości osobliwych, a A jest w przybliżeniu równe U*diag(s)*Vt

Wyniki dokładne. det, inverse, rank i solve_system używają dokładnych ułamków. rank nie stosuje tolerancji zaokrągleń. solve_system zgłasza błąd dla układu osobliwego i nie obsługuje układów nieliniowych ani układów o nieskończenie wielu rozwiązaniach.

Wyniki przybliżone. eigenvalues, qr, lu i svd używają arytmetyki zmiennoprzecinkowej i sprawdzają, czy wynik jest skończony. qr i svd przyjmują macierze prostokątne i zwracają czynniki w postaci zredukowanej („cienkiej”). Obliczanie wartości własnych i SVD kończy się po 10 000 iteracji. Element będący jedynie błędem zaokrąglenia względem największego elementu jest wyświetlany jako 0, ale odwołanie przez indeks zwraca zapisaną wartość. Macierze źle uwarunkowane mogą dawać mniej dokładne wyniki, więc nie sprawdzaj ich za pomocą ==.

calc
# Two adult tickets and one child ticket cost 34; one adult and two children cost 29
solve_system([[2,1],[1,2]], [34,29]) daje [13, 8]
det([[2,1],[1,2]]) daje 3
rank([[1,2],[2,4]]) daje 1

Liczby zespolone

i jest jednostką urojoną, chyba że zdefiniujesz nazwę lub własną jednostkę o nazwie i.

  • Funkcje: complex(real, imaginary), real, imag, conj, abs, arg (w radianach) i sqrt (pierwiastek główny) przyjmują liczby zespolone.
  • Dokładność: części liczby, działania arytmetyczne i potęgi całkowite pozostają dokładne. Pierwiastki w ogólnym przypadku oraz arg są przybliżone.
  • Wyniki rzeczywiste: gdy części urojone się redukują, jak w (2+3i) * (2-3i), wynikiem jest zwykła liczba rzeczywista. Wartość zapisana jako zespolona, np. -4 + 0i lub complex(-4,0), pozostaje zespolona w działaniach i po nadaniu nazwy, nawet gdy wyświetla się jako -4.
  • Pierwiastki kwadratowe i logarytmy liczb ujemnych: sqrt(-4), ln(-1) i log(-100) pozostają w dziedzinie liczb rzeczywistych i zgłaszają błąd liczby urojonej, wskazując odpowiedni zapis zespolony, np. sqrt(-4 + 0i). Ten zapis lub sqrt(complex(-4,0)) daje 2i.
  • Wyświetlanie: część będąca jedynie błędem zaokrąglenia zmiennoprzecinkowego jest pokazywana jako 0, więc exp(i*pi) wyświetla -1. Zapisana wartość zachowuje swoje cyfry.
  • Porównania: < i > działają tylko wtedy, gdy obie części urojone są równe zeru.
  • Pozostałe funkcje: sin, cos, tan i ich funkcje odwrotne, funkcje hiperboliczne i ich odwrotności, exp, ln, log lub log10, log2, cbrt oraz potęgi o wykładnikach ułamkowych lub zespolonych przyjmują liczby zespolone. Używają arytmetyki zmiennoprzecinkowej i gałęzi głównych. Logarytm z zera i każdy wynik nieskończony lub nieokreślony powodują błąd.
calc
(2+3i) * (2-3i) daje 13
abs(3+4i) daje 5
sqrt(-4 + 0i) daje 2i
sqrt(complex(-4,0)) daje 2i
sqrt(-4) daje Error: imaginary number. For a complex answer, write sqrt(-4 + 0i)
exp(i*pi) daje -1

Sumy i iloczyny

sum(expression, name, from, to) sumuje wyrażenie dla każdej liczby całkowitej od from do to, z uwzględnieniem obu końców. summation jest inną nazwą tej funkcji, a product zamiast sumować — mnoży.

  • Nazwa jest lokalna dla wywołania. Nie zmienia wcześniej zdefiniowanej nazwy ani nie tworzy zależności wiersza od takiej nazwy.
  • Jedną sumę lub iloczyn można umieścić wewnątrz drugiej.
  • Jeśli to jest mniejsze niż from, zakres jest pusty: suma wynosi 0, a iloczyn 1.
  • Jedno wywołanie może obejmować najwyżej 10 000 wyrazów.
calc
sum(k^2, k, 1, 10) daje 385
product(k, k, 1, 5) daje 120
k = 7 daje 7
sum(k, k, 1, 3) daje 6
k daje 7

Rozwiązywanie równań

solve(equation) odczytuje równanie wielomianowe stopnia 1 lub 2 z jedną niewiadomą i oblicza jego pierwiastki. Niewiadomą jest jedyna nazwa w równaniu, która nie ma wartości. Nazwa z przypisaną wartością jest odczytywana jako ta wartość. Prawą stronę można pominąć — wtedy wyrażenie zostaje przyrównane do zera.

  • Równanie liniowe zwraca liczbę. Równanie kwadratowe zwraca listę różnych pierwiastków rzeczywistych w kolejności rosnącej, więc pierwiastek podwójny daje listę jednoelementową. Postać wyniku zależy od zapisanego stopnia równania, a nie od znalezionych pierwiastków.
  • Współczynniki i ich przekształcenia są dokładne, podobnie jak pierwiastki, gdy wyróżnik jest kwadratem liczby wymiernej. Pozostałe równania kwadratowe zwracają dwa pierwiastki w przybliżeniu dziesiętnym.
  • Obie strony muszą być liczbami bez jednostek. Jednostki, kwoty pieniężne i wartości zespolone są odrzucane.
  • Równanie bez pierwiastka rzeczywistego daje Error: no real solution zamiast pierwiastka zespolonego. Równanie spełnione przez każdą wartość informuje o tym, zamiast wybierać jedną wartość.
  • Pozostałe przypadki — stopień 3 lub wyższy, równanie niewielomianowe, niewiadoma w dzielniku lub wykładniku, druga nazwa bez wartości — są odrzucane z komunikatem wskazującym poniższą formę z czterema argumentami.
calc
solve(2x + 6 = 10) daje 2
solve(x^2 - 5x + 6 = 0) daje [2, 3]
solve(x^2 - 2 = 0) daje [-1.4142135624, 1.4142135624]
solve(x^2 + 1 = 0) daje Error: no real solution

solve(expression, name, lower, upper) to inna funkcja: znajduje jedną rzeczywistą wartość name między lower a upper, dla której wyrażenie jest równe zeru. solve(left = right, name, lower, upper) znajduje punkt, w którym obie strony są równe.

  • Granice muszą być liczbami skończonymi, a lower musi być mniejsze niż upper.
  • Pierwiastek leżący dokładnie na granicy jest przyjmowany. W przeciwnym razie wyrażenie musi być dodatnie na jednej granicy i ujemne na drugiej oraz powinno być ciągłe między nimi.
  • W każdym kroku wyszukiwanie dzieli przedział na pół. Kończy się powodzeniem, gdy wartość wyrażenia różni się od zera o nie więcej niż 1e-10, a przedział jest dostatecznie wąski — w ciągu 128 kroków. Jeśli wyrażenie jest nieokreślone w sprawdzanym punkcie lub wyszukiwanie nie osiągnie zbieżności, wiersz pokazuje błąd.
  • Funkcja znajduje jeden pierwiastek, nie wszystkie. Do układów równań liniowych użyj solve_system.
calc
solve(1500 + 12*x = 20*x, x, 0, 1000) daje 187.5
solve(x^2 = 2, x, 0, 2) daje 1.4142135624

Rachunek różniczkowy i całkowy

Pochodne symboliczne

differentiate(expression, name), dostępne też jako derivative(expression, name), zwraca pochodną w postaci tekstu.

  • Stosuje reguły różniczkowania sumy, iloczynu, ilorazu, potęgi i funkcji złożonej do działań na liczbach rzeczywistych bez jednostek oraz funkcji sin, cos, tan, sinh, cosh, exp, ln i sqrt.
  • Pozostałe nazwy w wyrażeniu są traktowane jako stałe, niezależnie od tego, czy mają wartość w notatce: differentiate(a*x^2, x) daje (a*(2*(x^(2-1)))).
  • Wynik nie jest upraszczany i może mieć najwyżej 8192 znaki.
  • Inne funkcje, np. abs, powodują błąd; dla nich użyj pochodnej w punkcie. Nie jest to pełny system algebry komputerowej.
  • Pochodna podlega tym samym ograniczeniom dziedziny co pierwotne wyrażenie.
calc
differentiate(sin(x), x) daje cos(x)
differentiate(x^3, x) daje (3*(x^(3-1)))

Pochodne w punkcie

derivative(expression, name, point) lub differentiate z trzema argumentami oblicza numerycznie nachylenie w jednym punkcie. Stosuje stopniowo udokładniane różnice centralne i porównuje je z przybliżeniami jednostronnymi. Wyrażenie może korzystać z własnych funkcji, ale musi być gładkie w otoczeniu punktu i operować na liczbach rzeczywistych bez jednostek. Jeśli przybliżenie nie osiągnie zbieżności lub wartość w którymś próbkowanym punkcie będzie nieokreślona, wiersz pokaże błąd.

Ponieważ formy numeryczne obliczają liczbę, każda nazwa poza zmienną musi mieć wartość. Dotyczy to pochodnej w punkcie, sum, product, solve i integrate. Nazwa bez wartości powoduje komunikat Unsupported: Unknown name:, po którym pojawia się ta nazwa.

calc
derivative(x^3, x, 2) daje 12
f(x) = x^2
derivative(f(x), x, 3) daje 6
differentiate(a*x^2, x) daje (a*(2*(x^(2-1))))
derivative(a*x^2, x, 3) daje Unsupported: Unknown name: a

Całki oznaczone

integrate(expression, name, lower, upper) oblicza pole pod wykresem wyrażenia między dwiema skończonymi granicami.

  • Zamiana granic zmienia znak wyniku, a jednakowe granice dają zero.
  • Funkcja stosuje adaptacyjne kwadratury Gaussa–Kronroda o 7 i 15 punktach, rozmieszczonych nierównomiernie. Dzięki temu regularna fala taka jak cos(128*pi*x) nie wprowadza jej w błąd: integrate(cos(128*pi*x), x, 0, 1) daje około -1.3e-15, czyli zero z dokładnością do błędu zaokrąglenia.
  • Celem jest łączny szacowany błąd nie większy niż 1e-9 razy wartość bezwzględna wyniku (lub 1e-9 dla wyników o wartości bezwzględnej mniejszej niż 1). Funkcja porównuje co najmniej dwa poziomy dokładności, uwzględnia błędy zaokrągleń i najpierw zagęszcza obliczenia w części o największym szacowanym błędzie.
  • Obliczenia kończą się po 2048 udokładnieniach, 20 poziomach podziału albo 100 000 kroków współdzielonych z innymi zaawansowanymi obliczeniami w wierszu. Osiągnięcie limitu lub nieokreślona wartość w próbkowanym punkcie powoduje błąd.
  • Oszacowanie błędu jest dobrą wskazówką, ale nie gwarancją. Używaj gładkich wyrażeń o skończonych wartościach. Wyniki dla wyrażeń z ostrymi pikami, skokami lub szybkimi oscylacjami mogą być niedokładne.
  • Całki nieoznaczone i nieskończone granice nie są obsługiwane.
calc
integrate(x^2, x, 0, 3) daje 9
integrate(x^2, x, 3, 0) daje -9

Argumenty i jednostki w funkcjach matematycznych

  • factorial to inna nazwa fact, a trunc — int.
  • sign zwraca -1, 0 lub 1. atan2(y, x) zwraca kąt w radianach jako liczbę bez jednostki.
  • Opcjonalny drugi argument round, floor i ceil określa krok, a nie liczbę miejsc po przecinku: round(17, 5) zaokrągla do najbliższej wielokrotności 5. Zaokrąglanie do miejsc po przecinku opisuje rozdział Zaokrąglanie.
  • Logarytmy, funkcje wykładnicze i hiperboliczne nie przyjmują jednostek ani kwot pieniężnych. Zwykłe funkcje trygonometryczne przyjmują kąty, np. 30°.
  • Pierwiastki kwadratowe i sześcienne zachowują jednostki, gdy wykładnik jednostki dzieli się bez reszty przez stopień pierwiastka. Potęgowanie wielkości również zachowuje jednostki. Temperatur w stopniach Celsjusza lub Fahrenheita nie można podnosić do kwadratu ani pierwiastkować.
calc
gcd(12, 18) daje 6
round(17, 5) daje 15
sin(30°) daje 0.5
sqrt(9 m²) daje 3 m
(2 kg)^2 daje 4 kg²

Limity

Przed wyświetleniem wyniku sprawdzane są limity:

  • 1024 elementy listy lub range
  • macierze do 32 × 32
  • 10 000 wyrazów w jednym sum lub product
  • 16 poziomów zagnieżdżenia list i wywołań funkcji
  • 100 000 kroków współdzielonych przez wszystkie zaawansowane obliczenia w wierszu, w tym wywołania zagnieżdżone
  • 4096 bitów w liczniku lub mianowniku ułamka, tak jak w pozostałych obliczeniach Varlig Calc

Osiągnięcie limitu powoduje błąd w danym wierszu; reszta notatki nadal działa. Częściowa suma, niedokończone odwracanie macierzy ani pierwiastek bez osiągniętej zbieżności nigdy nie są przedstawiane jako wynik. Wszystkie limity i zasady dokładności opisuje rozdział Odczytywanie wyników: wyświetlanie i precyzja.