I've recently started a part-time MSc (with no prior degree or university experience) and I've found Typst brilliant. I've been using this template - https://typst.app/universe/package/ilm/.
The UX has been simply amazing, there is a VSCode extension that allows you to have the raw text content open in one tab on the left and the pdf on the right, with it updating everytime you save.
I also think it has translated to better grades, given some of the marks come from structure and presentation! For example, in my last essay I was using Binary Search Trees, wouldn't you know, there's a package that allows you to draw them easily!
Seriously, I can't sing it's praises enough. I'm sure if I was doing some more complex writing Latex may be the more appropriate choice but Typst's plug-n-play approach has been so smooth
NASA’s Office of the Chief Heath and Medical Officer has published a number of technical briefs [0] that cover a variety of human spaceflight related risks and topics. In particular, they have one for carbon dioxide [1, PDF warning] with some references that may interest you.
We should be a bit careful with what one means by "modulo arithmetic" here. If we are talking about arithmetic in Z/nZ (read "integers modulo n"), then the objects being acted upon are no longer integers, but equivalence classes of integers. That is, the set of all integers that satisfy the equivalence relation "~" where "a ~ b" means a - b = k*n for some integer k. For example, one of the equivalence classes in Z/3Z would be the set {..., -4, -1, 2, 5, ...}.
Since every element of the set is equivalent under that relation, we typically will choose a representative of that equivalence class, e.g., [2] for the previous class. If we view the "mod" or "modulo" operator to be a mapping from the integers to a particular representative of its equivalence class, there's no reason that negative values should be excluded. [-1] refers to the same equivalence class as [2], [32], and [-7]. The details of how integers are mapped to a chosen representative seem to vary from language to language, but modular arithmetic works all the same between them.
But 2 mod 3 should still give the same as -1 mod 3. If the representative for the same equivalence class is allowed to be different depending on the input, you could just as well use the number itself.
At the risk of being snarky, I should certainly hope the output depends on the input.
On a more serious note, there are quite reasonable properties that are satisfied by keeping the sign of the first argument as the chosen representative. In particular, for any two nonzero integers a and b, we have that:
a = (a / b) * b + (a mod b)
Where division should be interpreted as integer division that rounds towards zero. If a=-1 and b=3, then (a/b) would be zero which would require (a mod b) to be -1 if we want the above to hold. Also note that other rounding choices (e.g., rounding towards negative infinity) could impose (a mod b) = 2.
So choosing a particular representative comes down to choosing what properties you want your function to have in relation to other arithmetic.
As sibling comments have mentioned, "operator" here is being used in the programming language sense of the word, not the mathematical sense. Using the name "mod" [as in mod(a,n)] or "modulo" for the mapping that takes integers to a particular representative of its equivalence class in Z/nZ ("integers modulo n") doesn't seem like an unreasonable choice to me.
https://github.com/typst/typst/releases