utility functions
helpers that do not belong to one calculation domain.
| function | signature | what it does | tests |
|---|---|---|---|
| FROMBYTES | FROMBYTES(byte_array) | converts byte array to integer | 2 |
| GENERATEID | GENERATEID([prefix], [length]) | generates unique ID with prefix and random suffix | 1 |
| HASH | HASH(text, [algorithm]) | hex digest of text: SHA256 (default, FIPS 180-4) or MD5 (RFC 1321) | 2 |
| ISIN | ISIN(value, list) | checks if value is in a range or comma-separated list | 1 |
| RANDOMCHOICE | RANDOMCHOICE(choices, [count]) | random pick from a range (with replacement); count > 1 spills a column | 1 |
| RANDOMINT.UNIQUE | RANDOMINT.UNIQUE(bottom, top, count) | generates unique random integers in range | 1 |
| RANDOMNORMAL | RANDOMNORMAL(mean, std_dev, [count]) | generates random values from normal distribution | 1 |
| TIMESTAMP | TIMESTAMP() | current timestamp in milliseconds since epoch | 1 |
| TOARRAY | TOARRAY(range) | materializes a range as a dynamic array (spills) | 1 |
| TOBOOL | TOBOOL(value) | converts value to boolean | 1 |
| TODATE | TODATE(text) | parses text (YYYY-M-D, YYYY/M/D, M/D/YYYY, D.M.YYYY) to a date serial | 2 |
| TONUMBER | TONUMBER(text, [default_value]) | converts value to number; unparseable text returns default when given, else #VALUE! | 1 |
| TOTEXT | TOTEXT(value) | converts value to text representation | 1 |
| TOTIME | TOTIME(text) | parses \"HH:MM\" or \"HH:MM:SS\" text to a time fraction of day | 1 |
| UUID | UUID() | generates UUID v4 string | 2 |
| VALIDATE.DATE | VALIDATE.DATE(year, month, day) | validates date components form valid date | 1 |
| VALIDATE.EMAIL | VALIDATE.EMAIL(text) | validates email address format | 2 |
| VALIDATE.PHONE | VALIDATE.PHONE(text, [country_code]) | validates phone number format | 1 |
| VALIDATE.RANGE | VALIDATE.RANGE(value, min, max) | validates value is within min and max range | 1 |
| VALIDATE.URL | VALIDATE.URL(text) | validates URL format | 1 |