new(list()) :: struct()
new(number(), number(), number(), number(), number(), any()) :: struct()
output(struct()) :: number()
update(struct(), number(), number(), number()) :: tuple()