Getting started
Start a TAC
A TAC is an editable notebook where prose and calculations share one source. Start blank, choose a Start here example, open a supported text document, or begin with a guided TIQ.
In Multitac, open Start here → Getting started for an editable tour of prose, variables, dependencies, percentages, and unit conversion. Open “Getting started” in Multitac
# Weekend gathering
Planning pizza with friends.
people = 6
slices = people * 3
pizzas = ceil(slices / 8)
walk = 3.5 km
walk in milesResults appear beside the source at wide widths and below it on compact screens. Editing people recalculates slices and pizzas.
Writing and syntax
- Use
#for a heading and//to force a line to be a note. - Plain sentences and Markdown-style bullets remain notes.
- Use
=for explicit, case-sensitive variables. - Functions use parentheses and comma-separated arguments.
- Exponentiation is right-associative.
-2^2means-(2^2). - The global Decimal Places setting in Multitac Settings → Editor controls the maximum number of decimal places shown in Results, from 1 through 10 and defaulting to 2. Whole-number Results remain whole. A top-level
round(value, digits)overrides this display default for that Result.
Percentages
| Expression | Meaning | Result |
|---|---|---|
80 + 15% | Add 15% of 80 | 92 |
20% of 50 | Take 20% of 50 | 10 |
10% + 5% | Add percentage values | 15% |
Variables and dependencies
Variables are sequential and local to the notebook. Derived definitions retain their formulas. When an input changes, Multitac recalculates all affected dependents transitively.
- A dependency cycle produces a diagnostic.
- A broken input invalidates affected results instead of preserving stale values.
- A unit name cannot be reused as a variable.
- Blank lines separate total groups. Bare
sum,total,avg, andaveragesummarize the preceding group. prevresets at a blank line or calculation error.
Built-in functions
Function names are case-insensitive. Aggregate functions accept values, arrays, variables, and nested arrays. Compatible units are preserved. Every supported completion is listed below with its accepted parameter shape.
| Function | Meaning and parameters |
|---|---|
abs() | abs(value) — absolute value or vector magnitude |
acos() | acos(value) — inverse cosine |
acosh() | acosh(value) — inverse hyperbolic cosine |
acot() | acot(value) — inverse cotangent |
acoth() | acoth(value) — inverse hyperbolic cotangent |
and() | and(values) — true when every value is true |
asin() | asin(value) — inverse sine |
asinh() | asinh(value) — inverse hyperbolic sine |
atan() | atan(value) — inverse tangent |
atan2() | atan2(y, x) — angle from x and y coordinates |
atanh() | atanh(value) — inverse hyperbolic tangent |
average() | average(values) — arithmetic mean |
avg() | avg(values) — arithmetic mean |
cbrt() | cbrt(value) — cube root |
ceil() | ceil(value) — rounds up |
choose() | choose(n, r) — combinations without repetition |
clamp() | clamp(value, minimum, maximum) — limits a value to a range |
combin() | combin(n, r) — combinations without repetition |
combina() | combina(n, r) — combinations with repetition |
correl() | correl([x], [y]) — Pearson correlation |
cos() | cos(angle) — cosine |
cosh() | cosh(value) — hyperbolic cosine |
cot() | cot(angle) — cotangent |
coth() | coth(value) — hyperbolic cotangent |
count() | count(values) — number of values |
csc() | csc(angle) — cosecant |
csch() | csch(value) — hyperbolic cosecant |
date() | date(value) or date(yyyy, m, d) — date at midnight, displayed without a time |
datetime() | datetime(value) or datetime(yyyy, m, d) — date and time, using midnight when no time is supplied |
days() | days(date1, date2) — signed day difference |
daysbetween() | daysbetween(date1, date2) — elapsed days from first date to second |
degrees() | degrees(radians) — converts radians to degrees |
devsq() | devsq(values) — sum of squared deviations from the mean |
exp() | exp(value) — e raised to a power |
fact() | fact(integer) — factorial from 0 through 33 |
fisher() | fisher(value) — Fisher transformation |
fisherinv() | fisherinv(value) — inverse Fisher transformation |
floor() | floor(value) — rounds down |
fromunix() | fromunix(seconds) — date and time from a Unix timestamp |
gamma() | gamma(value) — gamma function |
geomean() | geomean(positive values) — geometric mean |
harmean() | harmean(positive values) — harmonic mean |
large() | large([values], rank) — value at a descending rank |
ln() | ln(value) — natural logarithm |
log() | log(value, base?) — base-10 or specified-base logarithm |
log10() | log10(value) — base-10 logarithm |
log2() | log2(value) — base-2 logarithm |
max() | max(values) — largest value |
mean() | mean(values) — arithmetic mean |
median() | median(values) — middle value after sorting |
min() | min(values) — smallest value |
not() | not(value) — reverses true and false |
or() | or(values) — true when any value is true |
pearson() | pearson([x], [y]) — Pearson correlation |
permut() | permut(n, r) — ordered selections without repetition |
permutationa() | permutationa(n, r) — ordered selections with repetition |
permute() | permute(n, r) — ordered selections without repetition |
phi() | phi(value) — standard normal probability density |
pi() | pi() — ratio of a circle’s circumference to its diameter |
pick() | pick(index, values) — selects a one-based list item |
power() | power(value, exponent) — raises a value to a power |
prod() | prod(values) — multiplies scalar values |
product() | product(values) — multiplies scalar values |
radians() | radians(degrees) — converts degrees to radians |
root() | root(degree, value) — nth root |
round() | round(value, digits?) — rounds to a whole number or digit count; a top-level digit count overrides the global Result display default |
rsq() | rsq([x], [y]) — square of Pearson correlation |
sec() | sec(angle) — secant |
sech() | sech(value) — hyperbolic secant |
sign() | sign(value) — returns −1, 0, or 1 |
sin() | sin(angle) — sine |
sinh() | sinh(value) — hyperbolic sine |
small() | small([values], rank) — value at an ascending rank |
sqrt() | sqrt(value) — square root |
stddev() | stddev(values) — population standard deviation |
stdev() | stdev(values) — sample standard deviation |
stdevp() | stdevp(values) — population standard deviation |
sum() | sum(values) — adds values |
sumsq() | sumsq(values) — sum of squared values |
tan() | tan(angle) — tangent |
tanh() | tanh(value) — hyperbolic tangent |
tod() | tod(seconds or duration) — time-of-day duration |
total() | total(values) — adds values |
trunc() | trunc(value) — removes the fractional part |
truncate() | truncate(value) — removes the fractional part |
unix() | unix(date) — Unix timestamp in seconds |
var() | var(values) — sample variance |
varp() | varp(values) — population variance |
xor() | xor(values) — true when an odd number of values are true |
Compatibility names
Apple and Excel names that perform the same scalar or array calculation share an implementation. TAC keeps choose(n, r) for combinations; selection uses pick(index, values…). Dotted names such as STDEV.P and VAR.S are accepted.
Units and conversions
Addition and conversion require compatible dimensions. Products and quotients preserve dimensional meaning. Offset temperatures cannot be multiplied as ordinary quantities. Type forms such as m^2 and ft^2 are normalized to typographic m² and ft².
distance = 12 km
distance in miles
speed = 65 mi / hour
time = 3.5 hours
speed * time in km- Angles default to radians; explicit
degworks in any angle setting. - Volume units use US customary definitions.
- CSS units use 96 pixels per inch and 16 pixels per em.
- Decimal data prefixes use 1000; binary prefixes use 1024.
Supported unit reference
| Symbol | Meaning |
|---|---|
A | ampere — electric current |
acre | acre — area |
B | byte — 8 bits |
bar | bar — pressure |
bit | bit — digital information |
bpm | beats per minute — frequency |
C | coulomb — electric charge |
cal | calorie — energy |
cm | centimeter — length |
cm² | square centimeter — area |
cup | US cup — volume |
cW | centiwatt — power |
day | day — time |
em | em — relative typographic length |
floz | US fluid ounce — volume |
ft | foot — length |
ft² | square foot — area |
fW | femtowatt — power |
g | gram — mass |
gal | US gallon — volume |
GB | gigabyte — 1,000,000,000 bytes |
Gb | gigabit — 1,000,000,000 bits |
GiB | gibibyte — 1,073,741,824 bytes |
GW | gigawatt — power |
ha | hectare — area |
HP | mechanical horsepower — power |
hr | hour — time |
inch | inch — length |
J | joule — energy |
K | kelvin — temperature |
kB | kilobyte — 1,000 bytes |
kb | kilobit — 1,000 bits |
kcal | kilocalorie — energy |
kg | kilogram — mass |
KiB | kibibyte — 1,024 bytes |
kJ | kilojoule — energy |
km | kilometer — length |
km/h | kilometer per hour — speed |
kPa | kilopascal — pressure |
kt | knot — speed |
kW | kilowatt — power |
L | liter — volume |
lb | pound — mass |
m | meter — length |
m/s | meter per second — speed |
mA | milliampere — electric current |
MB | megabyte — 1,000,000 bytes |
Mb | megabit — 1,000,000 bits |
mg | milligram — mass |
mi | mile — length |
MiB | mebibyte — 1,048,576 bytes |
min | minute — time |
ml | milliliter — volume |
mm | millimeter — length |
month | mean Gregorian month — time |
mph | mile per hour — speed |
ms | millisecond — time |
mV | millivolt — electric potential |
MW | megawatt — power |
mW | milliwatt — power |
m² | square meter — area |
m³ | cubic meter — volume |
N | newton — force |
nm | nanometer — length |
nmi | nautical mile — length |
nW | nanowatt — power |
Ohm | ohm — electrical resistance |
oz | ounce — mass |
Pa | pascal — pressure |
psi | pound per square inch — pressure |
pt | point — length |
PW | petawatt — power |
pW | picowatt — power |
px | CSS pixel — length |
rad | radian — angle |
s | second — time |
TB | terabyte — 1,000,000,000,000 bytes |
Tb | terabit — 1,000,000,000,000 bits |
tbsp | US tablespoon — volume |
TiB | tebibyte — 1,099,511,627,776 bytes |
tonne | metric tonne — mass |
tsp | US teaspoon — volume |
TW | terawatt — power |
uW | microwatt — power |
V | volt — electric potential |
W | watt — power |
week | week — time |
yd | yard — length |
year | mean Gregorian year — time |
° | degree — angle |
°C | degree Celsius — temperature |
°F | degree Fahrenheit — temperature |
µm | micrometer — length |
μW | microwatt — power |
µW | microwatt — power |
Equations and collections
Equations are sequential and document scoped. A bare unknown can be rearranged from a prior equation. solve(name) stores a solution, and named arguments can evaluate it. Two-by-two numeric matrix systems are supported.
Arrays and integer ranges work with sum, prod, map, and reduce. Named iterators such as a=1..3 stay local to the call.
scores = [12, 18, 24]
average(scores)
stdev.p(scores)
sum(x^2, x=1..10)Dates and time
Dates use the device’s local time zone unless an IANA time zone is specified. date() returns midnight and displays only the calendar date. datetime() displays both date and time; date-only values such as today and tomorrow use midnight by default.
The special values yesterday, today, tomorrow, now, noon, and midnight work as Results and inside date functions. A time by itself uses today’s date. Combine a relative day and time with either at or @. Twelve-hour input accepts AM or PM with or without a space; 24-hour input is also accepted.
date(now)
datetime(now)
2:00 PM
tomorrow at 14:00
tomorrow @ 2:00PM
noon
in 3 days
3 days ago
next Monday
last Monday
2026-10-26T14:00
daysbetween(date("2027-01-01"), date("2027-04-12"))next Monday always means the strictly future Monday, even when today is Monday; last Monday is likewise strictly in the past. in 3 days and 3 days ago are relative to the current moment. ISO inputs accept local YYYY-MM-DDTHH:mm values and values with seconds, Z, or an explicit offset.
Date durations use fixed seconds: a day is 24 hours, a year is the mean Gregorian 365.2425 days, and a month is one twelfth of that year. They are not calendar-aware month additions.
In Multitac, open Start here → Plans and decisions → Time and routines → Natural dates and times for an editable example. Open “Natural dates and times” in Multitac
Cards, pins, and live results
- Input cards edit a source literal through a bounded range. Bounds and step can be changed while keeping the current value valid.
- Comparison cards track any two calculated lines.
- Plot cards visualize a numeric collection or bounded integer range as a live one-series line plot.
- Pins preserve a reference to a stable source-line identity.
- Mac and Apple Vision Pro can open supported results in separate live windows or panels.
Cards never become a second copy of the value. They retain source references and refresh from evaluation.
TIQ workflow
A TIQ (Thought Invoking Question) is a question-led way to create or continue a TAC. Guided, curated, and Personalization TIQs use deterministic app-authored questions. Open-ended TIQs use Apple’s on-device model where available. Both paths can gather a goal, assumptions, preferences, and constraints, then propose visible source.
- Choose a focused goal or exploratory path.
- Answer in conversation, or edit the TAC directly.
- Review proposed prose and expressions.
- Apply, revise, or discard the proposal.
- Undo accepted edits as ordinary document changes.
AI can draft source, but Multitac evaluates every accepted expression. Redo replays the accepted source rather than invoking the model again.
Memory and Insights
Memory Review proposes useful thoughts and calculated Results from TACs opened on the current device. New candidates wait for approval and cannot affect Memory search, TIQs, or Insights while pending. Multitac does not crawl unrelated files or scan unopened iCloud documents.
- Open Memory → Review to approve, edit, or dismiss candidates individually or in a batch.
- Equivalent candidates are grouped while retaining links to every contributing TAC.
- Only approved items appear in Memory search, related suggestions, TIQs, or Insights.
- Search approved Memory and insert a visible copy with a source comment.
- Exclude an individual TAC, forget approved items, clear local Memory, or pause learning.
Find connections uses Apple’s on-device Foundation Model when available. It receives a bounded selection of current and related entries, treats notebook text as data, and returns suggestions with permitted source IDs. Those references are validated before display. A valid reference does not prove the interpretation is correct, so generated prose remains a suggestion to review.
AI limitations
Before Multitac first sends notebook material to Apple’s on-device model, it explains these limits and records only a local, non-identifying acknowledgement on that installation.
- AI suggestions may be incomplete or wrong.
- A citation identifies material supplied to the model; it does not prove the interpretation is correct.
- Multitac evaluates separately displayed arithmetic. That calculation does not validate the surrounding generated prose or advice.
- Review assumptions, units, source, expressions, and results before relying on or applying generated content.
- Multitac does not provide financial, legal, medical, engineering, tax, investment, emergency, or other professional advice.
Model-driven proposals remain visible until you apply, revise, or discard them. Accepted source remains editable and can be undone like an ordinary document change. Canceling the disclosure leaves deterministic TIQs, manual editing, and calculation available without invoking the model.
Documents and sync
The native .mtac document is regular UTF-8 text. An optional JSON footer stores stable line IDs, settings, pins, cards, the notebook Memory preference, and TIQ history. Multitac hides that footer in the editor and can recover readable source if metadata is absent or damaged.
| Format | Editing | Rich Multitac metadata |
|---|---|---|
.mtac | Native UTF-8 TAC source | Yes |
| Markdown | Opened and edited in place | No |
| Calca | Opened and edited in place; saved => text retained | No |
| Numi | Opened and edited in place | No |
iCloud Drive transports documents through Apple’s document infrastructure. Multitac has no custom sync server or remote account database.
Platform behavior
| Platform | Experience |
|---|---|
| iPhone | Compact library, push navigation, vertically arranged TAC and companion, and a current-result bar while editing. |
| iPad | Sidebar library, Inspiration browsing, adaptive side-by-side editing, keyboard support, multitasking, and document windows. |
| Mac | Nested library, document windows and tabs, menus, Undo and Redo, settings, and separate result windows. |
| Apple Vision Pro | Spatially comfortable library and document windows, separate result panels, and system scene restoration. |
App Shortcuts expose Start a new TIQ, Start a blank TAC, and Explore examples to Shortcuts and Siri where available.
Feature index
This index covers product capabilities outside the calculation vocabulary. Search any term to jump to the section that explains its behavior.
Writing and results
Mixed prose and calculations, headings, comments, inline :::: Results, reactive recalculation, diagnostics, result copying, pins, comparisons, plots, input cards, equation spacing, autocomplete, function and unit explanations, angle mode, Undo, and Redo.
Starting and finding work
Blank TACs, Quick TACs, guided and open-ended TIQs, Start here examples, folders, pinned folders, favorites, recently opened documents, sorting, library search, example search, documentation search, and platform deep links.
Context and guidance
Per-TAC Results, Memory Review, approved Memory, Insights, Personalization, source links, candidate approval and dismissal, reviewed wording, hide and restore, Add to Memory from this TAC, local Memory controls, and reviewable on-device AI suggestions.
Documents and platform behavior
Native .mtac, Markdown, Calca, Numi, import, export, Share, autosave, iCloud Drive, tabs and windows on Mac, adaptive sidebars and navigation, touch-and-hold menus, keyboard shortcuts, Home Screen Quick Actions, accessibility labels, VoiceOver, Dynamic Type, and reduced motion.
Current limits
- Currency and cryptocurrency calculations are deliberately unsupported.
- English input is supported for the first release.
- There is no cloud AI fallback, collaboration service, remote account, rich-text attachment system, or native ink canvas.
- The current plot card is a single-series line plot.
- Calendar months and years are fixed-duration calculation units, not calendar-aware additions.
- Some capabilities depend on Apple’s on-device model availability.