{
	"gtp": {
		"exprtext": "in1>in2?in1:0.",
		"digest": "Pass greater than operator",
		"alias": ">p",
		"comments": [
			"Compare two values for greater-than condition. Pass the left input if the condition is met.",
			"@seealso rnbo_ltp",
			"@seealso rnbo_gtep",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left > Right (Pass)",
				"digest": "Returns the left operand if the left input is greater than the right input. Returns 0 otherwise."
			}
		}
	},
	"gtep": {
		"exprtext": "in1>=in2?in1:0.",
		"digest": "Pass greater than or equals operator. Pass the left input if the condition is met.",
		"alias": ">=p",
		"comments": [
			"Compare two values for greater-than or equals condition.",
			"@seealso rnbo_ltep",
			"@seealso rnbo_gtp",
			"@tag RNBO",
			"@tag RNBO Logic",
			"@tag RNBO Operators",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left >= Right (Pass)",
				"digest": "Returns the left operand if the left input is greater than or equal to the right input. Returns 0 otherwise."
			}
		}
	},
	"eq": {
		"exprtext": "in1==in2",
		"digest": "Equals operator",
		"alias": [
			"equals",
			"=="
		],
		"comments": [
			"Compare two values for equal-to condition.",
			"@seealso rnbo_neq",
			"@seealso rnbo_eqp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left == Right",
				"digest": "Returns 1 if the two inputs are equal and 0 if the two inputs are not equal."
			}
		}
	},
	"lte": {
		"exprtext": "in1<=in2",
		"digest": "Less than or equal operator",
		"alias": [
			"<=",
			"lessthaneq"
		],
		"comments": [
			"Compare two values for less-than or equals condition.",
			"@seealso rnbo_gte",
			"@seealso rnbo_lt",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left <= Right",
				"digest": "Returns 1 if the left input is less than or equal to the right input. Returns 0 otherwise."
			}
		}
	},
	"gt": {
		"exprtext": "in1>in2",
		"digest": "Greater than operator",
		"alias": [
			">",
			"greaterthan"
		],
		"comments": [
			"Compare two values for greater-than condition.",
			"@seealso rnbo_lt",
			"@seealso rnbo_gte",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left > Right",
				"digest": "Returns 1 if the left input is greater than the right input. Returns 0 otherwise."
			}
		}
	},
	"lt": {
		"exprtext": "in1<in2",
		"digest": "Less than operator",
		"alias": [
			"<",
			"lessthan"
		],
		"comments": [
			"Compare two values for less-than condition.",
			"@seealso rnbo_gt",
			"@seealso rnbo_lte",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left < Right",
				"digest": "Returns 1 if the left input is less than the right input. Returns 0 otherwise."
			}
		}
	},
	"step": {
		"exprtext": "in2>=in1",
		"digest": "returns not(in1 < in2)",
		"comments": [
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		]
	},
	"gte": {
		"exprtext": "in1>=in2",
		"digest": "Greater than or equal operator",
		"alias": [
			">=",
			"greaterthaneq"
		],
		"comments": [
			"Compare two values for greater-than or equals condition.",
			"@seealso rnbo_lte",
			"@seealso rnbo_gt",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left >= Right",
				"digest": "Returns 1 if the left input is greater than or equal to the right input. Returns 0 otherwise."
			}
		}
	},
	"neq": {
		"exprtext": "in1!=in2",
		"digest": "Not equals operator",
		"alias": [
			"notequals",
			"!="
		],
		"comments": [
			"Compare two values for not-equal-to condition.",
			"@seealso rnbo_eq",
			"@seealso rnbo_neqp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left != Right",
				"digest": "Returns 1 if the two inputs are not equal and 0 if the two inputs are equal."
			}
		}
	},
	"neqp": {
		"exprtext": "in1!=in2?in1:0.",
		"digest": "Not equals / pass operator",
		"alias": "!=p",
		"comments": [
			"Compare two values for not-equal-to condition. Pass the left input if the condition is met.",
			"@seealso rnbo_eq",
			"@seealso rnbo_neq",
			"@seealso rnbo_eqp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared and returned. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left != Right (Pass)",
				"digest": "Returns the left operand if the two inputs are not equal and 0 if the two inputs are equal."
			}
		}
	},
	"ltep": {
		"exprtext": "in1<=in2?in1:0.",
		"digest": "Pass less than or equal operator",
		"alias": "<=p",
		"comments": [
			"Compare two values for less-than or equals condition. Pass the left input if the condition is met.",
			"@seealso rnbo_gtep",
			"@seealso rnbo_ltp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left <= Right (Pass)",
				"digest": "Returns the left operand if the left input is less than or equal to the right input. Returns 0 otherwise."
			}
		}
	},
	"eqp": {
		"exprtext": "in1==in2?in1:0.",
		"digest": "Equal / pass operator",
		"alias": "==p",
		"comments": [
			"Compare two values for equal-to condition. Pass the left input if the condition is met.",
			"@seealso rnbo_eq",
			"@seealso rnbo_neq",
			"@seealso rnbo_neqp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared and returned. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left == Right (Pass)",
				"digest": "Returns the left operand if the two inputs are equal and 0 if the two inputs are not equal."
			}
		}
	},
	"ltp": {
		"exprtext": "in1<in2?in1:0.",
		"digest": "Pass less than operator",
		"alias": "<p",
		"comments": [
			"Compare two values for less-than condition. Pass the left input if the condition is met.",
			"@seealso rnbo_gtp",
			"@seealso rnbo_ltp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Logic",
			"@tag RNBO Comparison",
			"@category Comparison"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be compared. Event version triggers comparison."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be compared. Event version must trigger the left inlet in order to perform comparison."
			},
			"out1": {
				"displayName": "Left < Right (Pass)",
				"digest": "Returns the left operand if the left input is less than the right input. Returns 0 otherwise."
			}
		}
	},
	"e": {
		"exprtext": "2.718281828459045",
		"digest": "The constant value of e",
		"alias": "E",
		"comments": [
			"The constant value of e (Euler's number)",
			"```sum(1/n!)```",
			"@seealso rnbo_sqrt2",
			"@seealso rnbo_pi",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Constant",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the constant e"
			},
			"out1": {
				"displayName": "Euler's number",
				"digest": "The constant value e"
			}
		}
	},
	"twopi": {
		"exprtext": "6.28318530717958647692",
		"digest": "The constant value of 2 pi",
		"alias": "TWOPI",
		"comments": [
			"The constant value of 2 pi: ",
			"```6.283185...```",
			"@seealso rnbo_pi",
			"@seealso rnbo_PI_OVER_2",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Constant",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of 2 pi"
			},
			"out1": {
				"displayName": "2 Pi",
				"digest": "The constant value of 2 pi"
			}
		}
	},
	"ln10": {
		"exprtext": "2.302585092994046",
		"digest": "The constant value of ln(10)",
		"alias": "LN10",
		"comments": [
			"The constant value of ln(10) (natural log of 10): ",
			"```2.302585...```",
			"@seealso rnbo_log",
			"@seealso rnbo_e",
			"@seealso rnbo_ln2",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of ln(10)"
			},
			"out1": {
				"displayName": "ln(10)",
				"digest": "The constant value of ln(10)"
			}
		}
	},
	"int": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "constant integer / convert to integer"
	},
	"i": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "constant integer / convert to integer"
	},
	"degtorad": {
		"exprtext": "0.017453292519943295",
		"digest": "The constant value used when converting from degrees to radians",
		"alias": "DEGTORAD",
		"comments": [
			"The degrees to radians conversion constant: ",
			"```PI / 180```",
			"@seealso rnbo_degtorad",
			"@seealso rnbo_radians",
			"@seealso rnbo_degrees",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Constant",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the degrees to radians constant"
			},
			"out1": {
				"displayName": "The square root of 2",
				"digest": "The degrees to radians constant"
			}
		}
	},
	"sqrt1_2": {
		"exprtext": "0.7071067811865476",
		"digest": "The constant value of sqrt(1/2)",
		"alias": "SQRT1_2",
		"comments": [
			"The constant value of the square root of 1/2: ",
			"```0.707106...```",
			"@seealso rnbo_sqrt",
			"@seealso rnbo_sqrt~",
			"@seealso rnbo_sqrt2",
			"@seealso rnbo_sqrt2~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Constant",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the square root of 1/2"
			},
			"out1": {
				"displayName": "The square root of 1/2",
				"digest": "The square root of 1/2"
			}
		}
	},
	"log10e": {
		"exprtext": "0.4342944819032518",
		"digest": "The constant value of log10(e)",
		"alias": "LOG10E",
		"comments": [
			"The constant value of log base 10 of `e`: ",
			"```0.434294...```",
			"@seealso rnbo_2e",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger log10(e)"
			},
			"out1": {
				"displayName": "Log10(e)",
				"digest": "Log base 10 of e"
			}
		}
	},
	"float": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "constant float / convert to float",
		"alias": "f"
	},
	"halfpi": {
		"exprtext": "1.57079632679489661923",
		"digest": "The constant value of pi/2",
		"alias": "HALFPI",
		"comments": [
			"The constant value of pi/2: ",
			"```1.570796...```",
			"@seealso rnbo_pi",
			"@seealso rnbo_PI_OVER_4",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of pi/2"
			},
			"out1": {
				"displayName": "Pi/2",
				"digest": "The constant value of pi/2"
			}
		}
	},
	"radtodeg": {
		"exprtext": "57.29577951308232",
		"digest": "The constant value used when converting from radians to degrees",
		"alias": "RADTODEG",
		"comments": [
			"The radians to degrees conversion constant: ",
			"```180 / PI```",
			"@seealso rnbo_degtorad",
			"@seealso rnbo_radians",
			"@seealso rnbo_degrees",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the radians to degrees constant"
			},
			"out1": {
				"displayName": "Radians to degrees constant",
				"digest": "The radians to degrees constant"
			}
		}
	},
	"ln2": {
		"exprtext": "0.6931471805599453",
		"digest": "the constant value of ln(2)",
		"alias": "LN2",
		"comments": [
			"The constant value of ln(2) (natural log of 2): ",
			"```0.693147...```",
			"@seealso rnbo_log",
			"@seealso rnbo_e",
			"@seealso rnbo_ln10",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of ln(2)"
			},
			"out1": {
				"displayName": "ln(2)",
				"digest": "The constant value of ln(2)"
			}
		}
	},
	"pi": {
		"exprtext": "3.14159265358979323846",
		"digest": "The constant value of pi",
		"alias": "PI",
		"comments": [
			"The constant value of pi: ",
			"```3.141592...```",
			"@seealso rnbo_PI_OVER_2",
			"@seealso rnbo_PI_OVER_4",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Constant",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of pi"
			},
			"out1": {
				"displayName": "Pi",
				"digest": "The constant value of pi"
			}
		}
	},
	"PI_OVER_2": {
		"exprtext": "1.57079632679489661923132169163975144",
		"digest": "the constant value of pi/2",
		"comments": [
			"The constant value of pi/2: ",
			"```1.570796...```",
			"@seealso rnbo_pi",
			"@seealso rnbo_PI_OVER_4",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Constant",
			"@tag RNBO Math",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of pi/2"
			},
			"out1": {
				"displayName": "Pi/2",
				"digest": "The constant value of pi/2"
			}
		}
	},
	"PI_OVER_4": {
		"exprtext": "0.785398163397448309615660845819875721",
		"digest": "The constant value of pi/4",
		"comments": [
			"The constant value of pi/4: ",
			"```0.78539...```",
			"@seealso rnbo_pi",
			"@seealso rnbo_PI_OVER_2",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Constant",
			"@tag RNBO Math",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of pi/4"
			},
			"out1": {
				"displayName": "Pi/4",
				"digest": "The constant value of pi/4"
			}
		}
	},
	"constant": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "a constant value",
		"comments": [
			"The constant value of log base 2 of `e`: ",
			"```1.442695...```",
			"@seealso rnbo_log10e",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Constant",
			"@category Constant"
		]
	},
	"log2e": {
		"exprtext": "1.442695040888963387",
		"digest": "the constant value of log2(e)",
		"alias": "LOG2E",
		"comments": [
			"The constant value of log base 2 of `e`: ",
			"```1.442695...```",
			"@seealso rnbo_log10e",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger log2(e)"
			},
			"out1": {
				"displayName": "Log2(e)",
				"digest": "Log base 2 of e"
			}
		}
	},
	"sqrt2": {
		"exprtext": "1.4142135623730951",
		"digest": "The constant value of sqrt(2)",
		"alias": "SQRT2",
		"comments": [
			"The constant value of the square root of 2: ",
			"```1.414213...```",
			"@seealso rnbo_sqrt",
			"@seealso rnbo_sqrt~",
			"@seealso rnbo_sqrt1_2",
			"@seealso rnbo_sqrt1_2~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Constant",
			"@tag RNBO Math",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the square root of 2"
			},
			"out1": {
				"displayName": "Degrees to radians constant",
				"digest": "The square root of 2"
			}
		}
	},
	"phi": {
		"exprtext": "1.618033988749894848204586834",
		"digest": "The constant value of phi",
		"alias": "PHI",
		"comments": [
			"The constant value of phi (the golden ratio) ",
			"```(1 + sqrt(5)) / 2```",
			"@seealso rnbo_sqrt2",
			"@seealso rnbo_pi",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Constant",
			"@tag RNBO Math",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the constant phi"
			},
			"out1": {
				"displayName": "The Golden Ratio",
				"digest": "The phi constant"
			}
		}
	},
	"invpi": {
		"exprtext": "0.3183098861837907",
		"digest": "The constant value of 1/pi",
		"alias": "INVPI",
		"comments": [
			"The constant value of 1/pi: ",
			"```0.3183098...```",
			"@seealso rnbo_pi",
			"@seealso rnbo_PI_OVER_2",
			"@seealso rnbo_PI_OVER_4",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Constant"
		],
		"meta": {
			"in1": {
				"displayName": "Control",
				"digest": "Non-zero values trigger the value of 1/pi"
			},
			"out1": {
				"displayName": "1/Pi",
				"digest": "The constant value of 1/pi"
			}
		}
	},
	"pass": {
		"exprtext": "in1",
		"digest": "Allows input values to pass to the output unchanged",
		"comments": [
			"@seealso rnbo_eqp",
			"@seealso rnbo_neqp",
			"@seealso rnbo_gtp",
			"@seealso rnbo_ltp",
			"@seealso rnbo_gate",
			"@seealso rnbo_gate~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to be passed through"
			},
			"out1": {
				"displayName": "Output",
				"digest": "The input value"
			}
		}
	},
	"xor": {
		"exprtext": "!!in1 ^ !!in2",
		"digest": "Logical xor operator",
		"alias": "^^",
		"forceBinaryTransform": true,
		"comments": [
			"Compares one value to another and outputs a `1` if the either (but not both) values are zero. Outputs a `0` otherwise.",
			"@seealso rnbo_and",
			"@seealso rnbo_or",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Comparison",
			"@tag RNBO Logic",
			"@category Logic"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Performs the operation with the value currently stored. If there is no argument, || initially holds `0`."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is compared to the value in the left inlet to determine output but only a value in the left inlet will trigger output."
			},
			"out1": {
				"displayName": "Left ^^ Right",
				"digest": "If either input value is is non-zero, but not both, the output is `1`. Otherwise the output is `0`."
			}
		}
	},
	"or": {
		"exprtext": "in1||in2",
		"digest": "Performs a logical OR",
		"alias": "||",
		"comments": [
			"Compares one value to another and outputs a `1` if the either value is non-zero or a `0` if both number are zero.",
			"@seealso rnbo_and",
			"@seealso rnbo_xor",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Comparison",
			"@tag RNBO Logic",
			"@category Logic"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Performs the operation with the value currently stored. If there is no argument, || initially holds `0`."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is compared to the value in the left inlet to determine output but only a value in the left inlet will trigger output."
			},
			"out1": {
				"displayName": "Left || Right",
				"digest": "If either the value in the left inlet or the value in the right inlet (or specified by the argument) is not `0`, then the output is `1`. Otherwise, the output is `0`."
			}
		}
	},
	"bool": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "constant boolean / convert to boolean"
	},
	"and": {
		"exprtext": "in1&&in2",
		"digest": "logical AND operator",
		"alias": [
			"logand",
			"&&"
		],
		"comments": [
			"Compares one number to another and outputs a 1 if the two numbers are both non-zero or a 0 if either number is 0.",
			"@seealso rnbo_or",
			"@seealso rnbo_not",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Comparison",
			"@tag RNBO Logic",
			"@category Logic"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Performs the operation with the value currently stored. If there is no argument, && initially holds `0`."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is compared to the value in the left inlet to determine output but only a value in the left inlet will trigger output."
			},
			"out1": {
				"displayName": "Left || Right",
				"digest": "If either the value in the left inlet or the value in the right inlet (or specified by the argument) is not `0`, then the output is `0`. Otherwise, the output is `1`."
			}
		}
	},
	"not": {
		"exprtext": "in1==0.",
		"digest": "Logical negation operator",
		"alias": "!",
		"comments": [
			"Returns 1 for zero values and 0 for non-zero values",
			"@seealso rnbo_neq",
			"@seealso rnbo_neg",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Comparison",
			"@tag RNBO Logic",
			"@category Logic"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to be logically negated."
			},
			"out1": {
				"displayName": "Logical negation",
				"digest": "1 if input is a zero value, 0 if input is a non-zero value."
			}
		}
	},
	"rdiv": {
		"exprtext": "div(in2,in1)",
		"digest": "Reverse division (divide second input by first)",
		"alias": "!/",
		"comments": [
			"@seealso rnbo_div",
			"@seealso rnbo_rmod",
			"@seealso rnbo_rsub",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "The value is stored as the divisor (the number to be divided into the number in the right inlet)."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is divided by the value in the left inlet, and the result is sent out the outlet."
			},
			"out1": {
				"displayName": "Right / Left",
				"digest": "The divided output"
			}
		}
	},
	"absdiff": {
		"exprtext": "abs(in1-in2)",
		"digest": "Compute the absolute difference between two inputs",
		"comments": [
			"@seealso rnbo_sub",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Performs the subtraction with the value currently stored."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value in the right inlet is subtracted from this value and the result is sent out the outlet."
			},
			"out1": {
				"displayName": "Non-Negative Left - Right",
				"digest": "The absolute value of the difference between the two numbers received in the inlets."
			}
		}
	},
	"add": {
		"exprtext": "in1+in2",
		"digest": "Add inputs",
		"alias": "+",
		"comments": [
			"@seealso rnbo_add~",
			"@seealso rnbo_div",
			"@seealso rnbo_sub",
			"@seealso rnbo_mul",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Set the left inlet value to add"
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Set the value in the right inlet to add "
			},
			"out1": {
				"displayName": "Left + Right",
				"digest": "The summed output from the two inlets"
			}
		}
	},
	"div": {
		"exprtext": "in1/in2",
		"safeexprtext": "in2==0.?0.:in1/in2",
		"digest": "Divide inputs",
		"alias": "/",
		"comments": [
			"@seealso rnbo_mul",
			"@seealso rnbo_add",
			"@seealso rnbo_sub",
			"@seealso rnbo_mul",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "The value is divided by the value in the right inlet, and the result is sent out the outlet."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is stored as the divisor (the number to be divided into the number in the left inlet)."
			},
			"out1": {
				"displayName": "Left / Right",
				"digest": "The divided output"
			}
		}
	},
	"mul": {
		"exprtext": "in1*in2",
		"digest": "Multiply two inputs",
		"alias": [
			"*",
			"times"
		],
		"comments": [
			"Multiplies two values together.",
			"@seealso rnbo_mul",
			"@seealso rnbo_mulequals",
			"@seealso rnbo_mulequals~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be multiplied. Event version triggers calculation."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be multiplied. Event version must trigger the left inlet in order to perform calculation."
			},
			"out1": {
				"displayName": "Left * Right",
				"digest": "The output product"
			}
		}
	},
	"neg": {
		"exprtext": "-in1",
		"digest": "Logical inversion operator",
		"comments": [
			"Returns the input value with its opposite sign.",
			"@seealso rnbo_not",
			"@seealso rnbo_neq",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to be inverted."
			},
			"out1": {
				"displayName": "Inverted output",
				"digest": "Returns an inverted version of the input."
			}
		}
	},
	"rsub": {
		"exprtext": "sub(in2,in1)",
		"digest": "Reverse subtraction (subtract second input from first)",
		"alias": [
			"rminus",
			"!-"
		],
		"comments": [
			"@seealso rnbo_sub",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "The value in the left inlet is subtracted from this value and the result is sent out the outlet."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Performs the subtraction with the value currently stored."
			},
			"out1": {
				"displayName": "Right - Left",
				"digest": "The difference between the two numbers received in the inlets."
			}
		}
	},
	"sub": {
		"exprtext": "in1-in2",
		"digest": "Subtract inputs",
		"alias": [
			"minus",
			"-"
		],
		"comments": [
			"@seealso rnbo_add",
			"@seealso rnbo_div",
			"@seealso rnbo_mul",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "Performs the subtraction with the value currently stored."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value in the right inlet is subtracted from this value and the result is sent out the outlet."
			},
			"out1": {
				"displayName": "Left - Right",
				"digest": "The difference between the two numbers received in the inlets."
			}
		}
	},
	"mod": {
		"exprtext": "in1 % in2",
		"safeexprtext": "safemod(in1,in2)",
		"digest": "Divide two values, output the remainder",
		"alias": "%",
		"comments": [
			"% takes two values, divides one by the other and outputs the remainder of the division.",
			"@seealso rnbo_rmod",
			"@seealso rnbo_rmod~",
			"@seealso rnbo_mod~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Left Operand",
				"digest": "The value is divided by the value in the right inlet and the remainder is sent out the outlet."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is stored as the divisor (the value to be divided into the value in the left inlet) for calculating the remainder."
			},
			"out1": {
				"displayName": "Left % Right",
				"digest": "The modulo output"
			}
		}
	},
	"rmod": {
		"exprtext": "in2 % in1",
		"safeexprtext": "safemod(in2,in1)",
		"digest": "Reverse modulo (divide two values, output the remainder)",
		"alias": "!%",
		"comments": [
			"!% reverses the operands of %. It takes two values, divides one by the other and outputs the remainder of the division.",
			"@seealso rnbo_rmod~",
			"@seealso rnbo_mod",
			"@seealso rnbo_mod~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Right Operand",
				"digest": "The value is stored as the divisor (the value to be divided into the value in the left inlet) for calculating the remainder."
			},
			"in2": {
				"displayName": "Left Operand",
				"digest": "The value is divided by the value in the right inlet and the remainder is sent out the outlet."
			},
			"out1": {
				"displayName": "Left !% Right",
				"digest": "The modulo output"
			}
		}
	},
	"imod": {
		"exprtext": "imod(in1, in2)",
		"safeexprtext": "in2 == 0 ? 0 : imod(in1, in2)",
		"digest": "Divide two integer values, output the remainder",
		"comments": [
			"% takes two integer values, divides one by the other and outputs the remainder of the division.",
			"@seealso rnbo_rmod",
			"@seealso rnbo_rmod~",
			"@seealso rnbo_mod~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"publishAsObject": false,
			"in1": {
				"displayName": "Left Operand",
				"digest": "The value is divided by the value in the right inlet and the remainder is sent out the outlet."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "The value is stored as the divisor (the value to be divided into the value in the left inlet) for calculating the remainder."
			},
			"out1": {
				"displayName": "Left % Right",
				"digest": "The modulo output"
			}
		}
	},
	"abs": {
		"exprtext": "rnbo_abs(in1)",
		"digest": "The absolute value of the input",
		"comments": [
			"Calculate the absolute (non-negative) value of the input",
			"@seealso rnbo_absdiff",
			"@seealso rnbo_fabs",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Numeric",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The input value"
			},
			"out1": {
				"displayName": "Non-Negative Output",
				"digest": "The absolute value of the input"
			}
		}
	},
	"fabs": {
		"exprtext": "rnbo_fabs(in1)",
		"digest": "The absolute value of the input",
		"comments": [
			"Calculate the absolute (non-negative) value of the input",
			"@seealso rnbo_abs",
			"@seealso rnbo_absdiff",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The input value"
			},
			"out1": {
				"displayName": "Non-Negative Output",
				"digest": "The approximated absolute value of the input"
			}
		}
	},
	"floor": {
		"exprtext": "rnbo_floor(in1)",
		"digest": "Round an input value down to the next lower integer (toward negative infinity)",
		"comments": [
			"@seealso rnbo_round",
			"@seealso rnbo_ceil",
			"@seealso rnbo_trunc",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Range",
			"@tag RNBO Numeric",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The value to be rounded down"
			},
			"out1": {
				"displayName": "Rounded Output",
				"digest": "The rounded value"
			}
		}
	},
	"round": {
		"exprtext": "in2 == 0 ? 0 : rnbo_fround(in1*1/in2)*in2",
		"digest": "Round to nearest integer or multiple of a given value",
		"defaultValues": {
			"in2": 1
		},
		"comments": [
			"@seealso rnbo_floor",
			"@seealso rnbo_ceil",
			"@seealso rnbo_trunc",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Value",
				"digest": "The value to be rounded"
			},
			"in2": {
				"displayName": "Nearest",
				"digest": "Round to the nearest this"
			},
			"out1": {
				"displayName": "Output",
				"digest": "The rounded value"
			}
		}
	},
	"fract": {
		"exprtext": "fract(in1)",
		"digest": "Return only the fractional component of the input",
		"comments": [
			"Outputs the fractional component of the input, performing a modulo 1.0 operation on all input values.",
			"@seealso rnbo_round",
			"@seealso rnbo_ceil",
			"@seealso rnbo_floor",
			"@seealso rnbo_trunc",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The input from which the remainder is to be extracted"
			},
			"out1": {
				"displayName": "Remainder",
				"digest": "The fractional component (remainder) of the input"
			}
		}
	},
	"ceil": {
		"exprtext": "rnbo_ceil(in1)",
		"digest": "Round an input value up to the next higher integer (toward positive infinity)",
		"comments": [
			"@seealso rnbo_round",
			"@seealso rnbo_floor",
			"@seealso rnbo_trunc",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Numeric",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The value to be rounded up"
			},
			"out1": {
				"displayName": "Rounded Output",
				"digest": "The rounded value"
			}
		}
	},
	"cbrt": {
		"exprtext": "rnbo_cbrt(in1)",
		"digest": "Returns the cubic root of the input",
		"comments": [
			"@seealso rnbo_sqrt",
			"@seealso rnbo_pow",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Powers",
			"@tag RNBO Math",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The value to be processed"
			},
			"out1": {
				"displayName": "Cubic Root",
				"digest": "The cubic root of the input"
			}
		}
	},
	"trunc": {
		"exprtext": "trunc(in1)",
		"digest": "Round the value down to the next smaller integer (toward zero)",
		"comments": [
			"@seealso rnbo_round",
			"@seealso rnbo_floor",
			"@seealso rnbo_ceil",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Numeric",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The value to be rounded down"
			},
			"out1": {
				"displayName": "Rounded Output",
				"digest": "The rounded value"
			}
		}
	},
	"sign": {
		"exprtext": "in1 == 0 ? 0 : in1 < 0 ? -1 : 1",
		"digest": "Return the sign of the input",
		"comments": [
			"Positive input returns 1, negative input returns -1, zero returns itself.",
			"@seealso rnbo_neg",
			"@seealso rnbo_not",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Numeric",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input value to be tested"
			},
			"out1": {
				"displayName": "Sign",
				"digest": "The sign of the input"
			}
		}
	},
	"exp2": {
		"exprtext": "rnbo_pow(2,in1)",
		"digest": "Raise 2 to a power",
		"comments": [
			"@seealso rnbo_exp",
			"@seealso rnbo_pow",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Powers",
			"@tag RNBO Math",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Exponential Value",
				"digest": "Raise 2 to this value"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Outputs 2 raised to the input value"
			}
		}
	},
	"exp": {
		"exprtext": "rnbo_exp(in1)",
		"digest": "Raise e to a power",
		"comments": [
			"@seealso rnbo_e",
			"@seealso rnbo_pow",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Powers",
			"@tag RNBO Math",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Exponential Value",
				"digest": "Raise e to this value"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Outputs e raised to the input value"
			}
		}
	},
	"log10": {
		"exprtext": "rnbo_log10(in1)",
		"safeexprtext": "in1 <= 0 ? 0 : rnbo_log10(in1)",
		"digest": "The logarithm base 10 of the input",
		"comments": [
			"@seealso rnbo_exp",
			"@seealso rnbo_log",
			"@seealso rnbo_log2",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input value to be processed."
			},
			"out1": {
				"displayName": "Log Output",
				"digest": "The log base 10 of the input."
			}
		}
	},
	"log1p": {
		"exprtext": "rnbo_log1p(in1)",
		"safeexprtext": "in1 <= 0 ? 0 : rnbo_log1p(in1)",
		"digest": "Returns the natural logarithm (base e) of the input + 1",
		"comments": [
			"@seealso rnbo_exp",
			"@seealso rnbo_log",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input value to be processed."
			},
			"out1": {
				"displayName": "Natural Log Output",
				"digest": "The natural log of the input plus one."
			}
		}
	},
	"log2": {
		"exprtext": "rnbo_log2(in1)",
		"safeexprtext": "in1 <= 0 ? 0 : rnbo_log2(in1)",
		"digest": "The logarithm base 2 of the input",
		"comments": [
			"@seealso rnbo_exp",
			"@seealso rnbo_log",
			"@seealso rnbo_log10",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input value to be processed."
			},
			"out1": {
				"displayName": "Log Output",
				"digest": "The log base 2 of the input."
			}
		}
	},
	"log2f": {
		"exprtext": "rnbo_log2(in1)",
		"safeexprtext": "in1 <= 0 ? 0 : rnbo_log2(in1)",
		"digest": "The logarithm base 2 of the input. Output value is approximated for faster computation.",
		"comments": [
			"@seealso rnbo_log2",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input value to be processed."
			},
			"out1": {
				"displayName": "Log Output",
				"digest": "The approximated log base 2 of the input."
			}
		}
	},
	"fastexp": {
		"exprtext": "fastexp(in1)",
		"digest": "Approximated e to a power",
		"comments": [
			"Raise `e` to a power. Output value is approximated for faster computation.",
			"@seealso rnbo_e",
			"@seealso rnbo_pow",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Exponential Value",
				"digest": "Raise e to this value"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Outputs approximated e raised to the input value"
			}
		}
	},
	"fastpow": {
		"exprtext": "fastpow(in1, in2)",
		"digest": "Approximated first input to the power of the second input",
		"comments": [
			"Approximated exponential for faster computation",
			"@seealso rnbo_pow",
			"@seealso rnbo_safepow",
			"@seealso rnbo_exp",
			"@seealso rnbo_log",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Base",
				"digest": "The base of the exponential expression. Event version triggers calculation."
			},
			"in2": {
				"displayName": "Exponent",
				"digest": "The exponent of the exponential expression. Event version must trigger the left inlet in order to perform calculation"
			},
			"out1": {
				"displayName": "Output",
				"digest": "The calculated output."
			}
		}
	},
	"pow": {
		"exprtext": "rnbo_pow(in1,in2)",
		"safeexprtext": "fixnan(rnbo_pow(in1,in2))",
		"digest": "First input is raised to the power of the second input",
		"comments": [
			"@seealso rnbo_fastpow",
			"@seealso rnbo_safepow",
			"@seealso rnbo_exp",
			"@seealso rnbo_log",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Base",
				"digest": "The base of the exponential expression. Event version triggers calculation."
			},
			"in2": {
				"displayName": "Exponent",
				"digest": "The exponent of the exponential expression. Event version must trigger the left inlet in order to perform calculation"
			},
			"out1": {
				"displayName": "Output",
				"digest": "The calculated output."
			}
		}
	},
	"log": {
		"exprtext": "rnbo_log(in1)",
		"safeexprtext": "in1 <= 0 ? 0 : rnbo_log(in1)",
		"digest": "The natural logarithm of the input (log base e)",
		"alias": "ln",
		"comments": [
			"@seealso rnbo_exp",
			"@seealso rnbo_log10",
			"@seealso rnbo_e",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input value to be processed."
			},
			"out1": {
				"displayName": "Natural Log Output",
				"digest": "The natural log of the input."
			}
		}
	},
	"sqrt": {
		"exprtext": "rnbo_sqrt(in1)",
		"safeexprtext": "in1 <= 0 ? 0 : rnbo_sqrt(in1)",
		"digest": "square root of the input",
		"comments": [
			"@seealso rnbo_pow",
			"@seealso rnbo_cbrt",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Powers",
			"@tag RNBO Math",
			"@category Powers"
		]
	},
	"switch": {
		"exprtext": "in1!=0.?in2:in3",
		"digest": "smoothed fade of inputs",
		"comments": [
			"@seealso rnbo_gate",
			"@seealso rnbo_smoothstep",
			"@seealso rnbo_mix",
			"@category Route"
		],
		"meta": {
			"publishAsObject": false
		}
	},
	"cond": {
		"exprtext": "in1!=0.?in2:in3",
		"digest": "Conditional operator",
		"alias": "?",
		"comments": [
			"Selects between the second and third inputs according to the boolean value of the first. If the first argument is true, the second argument will be output. Otherwise, the third argument will be output.",
			"@seealso rnbo_eq",
			"@seealso rnbo_neq",
			"@seealso rnbo_and",
			"@seealso rnbo_or",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Route",
			"@tag RNBO Logic",
			"@category Route"
		],
		"meta": {
			"in1": {
				"displayName": "Condition",
				"digest": "Condition to test"
			},
			"in2": {
				"displayName": "If True",
				"digest": "Value if true"
			},
			"in3": {
				"displayName": "If False",
				"digest": "Value if false"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Conditional output"
			}
		}
	},
	"mix": {
		"exprtext": "in1+in3*(in2-in1)",
		"digest": "Linear crossfading between two inputs",
		"defaultargs": [
			"in3",
			"in2"
		],
		"comments": [
			"@seealso rnbo_xfade",
			"@seealso rnbo_xfade~",
			"@seealso rnbo_pan",
			"@seealso rnbo_pan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Mixing",
			"@tag RNBO Route",
			"@category Mixing"
		],
		"meta": {
			"in1": {
				"displayName": "Left",
				"digest": "The left input to be mixed"
			},
			"in2": {
				"displayName": "Right",
				"digest": "The right input to be mixed"
			},
			"in3": {
				"displayName": "Crossfade",
				"digest": "The crossfade position, between 0. and 1."
			},
			"out1": {
				"displayName": "Mixed",
				"digest": "The mixed output"
			}
		}
	},
	"tan": {
		"exprtext": "rnbo_tan(in1)",
		"digest": "Tangent of the input",
		"comments": [
			"Calculate the tan of the input value in radians",
			"@seealso rnbo_tanh",
			"@seealso rnbo_atan",
			"@seealso rnbo_atanh",
			"@seealso rnbo_cos",
			"@seealso rnbo_sin",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the tan function in radians."
			},
			"out1": {
				"displayName": "Tan Output",
				"digest": "The tan of the input."
			}
		}
	},
	"fastsin": {
		"exprtext": "fastsin(in1)",
		"digest": "Approximated sine of the input",
		"comments": [
			"Calculate the sine of the input value in radians. Output value is approximated for faster computation.",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@seealso rnbo_fastcos",
			"@seealso rnbo_fasttan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the sine function in radians."
			},
			"out1": {
				"displayName": "Sine Output",
				"digest": "The approximated sine of the input."
			}
		}
	},
	"acos": {
		"exprtext": "rnbo_acos(in1)",
		"safeexprtext": "in1 < -1 || in1 > 1 ? 0 : rnbo_acos(in1)",
		"digest": "Arc-cosine of the input",
		"comments": [
			"Calculate the arc-cosine of the input value. Returns a value in radians.",
			"@seealso rnbo_cosh",
			"@seealso rnbo_acosh",
			"@seealso rnbo_cos",
			"@seealso rnbo_sin",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the arc-cosine function."
			},
			"out1": {
				"displayName": "Arc-cosine Output (Radians)",
				"digest": "The arc-cosine of the input in radians."
			}
		}
	},
	"fasttan": {
		"exprtext": "fasttan(in1)",
		"digest": "Approximated tangent of the input",
		"comments": [
			"Calculate the tan of the input value in radians. Output value is approximated for faster computation.",
			"@seealso rnbo_tan",
			"@seealso rnbo_cos",
			"@seealso rnbo_sin",
			"@seealso rnbo_fastcos",
			"@seealso rnbo_fastsin",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the tan function in radians."
			},
			"out1": {
				"displayName": "Tan Output",
				"digest": "The approximated tan of the input."
			}
		}
	},
	"tanh": {
		"exprtext": "rnbo_tanh(in1)",
		"digest": "Hyperbolic tangent of the input",
		"comments": [
			"Calculate the hyperbolic tan of the input value in radians",
			"@seealso rnbo_tan",
			"@seealso rnbo_atan",
			"@seealso rnbo_atanh",
			"@seealso rnbo_cos",
			"@seealso rnbo_sin",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the hyperbolic tan function in radians."
			},
			"out1": {
				"displayName": "Hyperbolic Tan Output",
				"digest": "The hyperbolic tan of the input."
			}
		}
	},
	"atan": {
		"exprtext": "rnbo_atan(in1)",
		"digest": "arc tangent of the input (returns radians)",
		"comments": [
			"Calculate the arc tangent of the given input (returns radians).",
			"@seealso atan",
			"@seealso rnbo_atan~",
			"@seealso rnbo_tan",
			"@seealso rnbo_atanh",
			"@seealso rnbo_degrees",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the arc-tan function."
			},
			"out1": {
				"displayName": "Arc-tan Output (Radians)",
				"digest": "The arc-tan of the input in radians."
			}
		}
	},
	"sinh": {
		"exprtext": "rnbo_sinh(in1)",
		"digest": "Hyperbolic sine of the input",
		"comments": [
			"Calculate the hyperbolic sine of the input value",
			"@seealso rnbo_sin",
			"@seealso rnbo_asin",
			"@seealso rnbo_asinh",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Trigonometry",
			"@tag RNBO Math",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the hyperbolic sine function."
			},
			"out1": {
				"displayName": "Hyperbolic Sine Output",
				"digest": "The hyperbolic sine of the input."
			}
		}
	},
	"atanh": {
		"exprtext": "rnbo_atanh(in1)",
		"digest": "Inverse hyperbolic tangent of the input",
		"comments": [
			"Calculate the inverse hyperbolic tan of the input value",
			"@seealso rnbo_tan",
			"@seealso rnbo_atan",
			"@seealso rnbo_tanh",
			"@seealso rnbo_cos",
			"@seealso rnbo_sin",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the inverse hyperbolic tan function."
			},
			"out1": {
				"displayName": "Inverse Hyperbolic Tan Output",
				"digest": "The inverse hyperbolic tan of the input."
			}
		}
	},
	"radians": {
		"exprtext": "in1*(PI/180.)",
		"digest": "Convert degrees to radians",
		"comments": [
			"Converts degrees to radians by performing the following common operation:",
			"```rad = deg * (PI / 180)```",
			"@seealso rnbo_radtodeg",
			"@seealso rnbo_degrees",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Trigonometry",
			"@tag RNBO Function",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Degrees",
				"digest": "The value in degrees to convert"
			},
			"out1": {
				"displayName": "Radians",
				"digest": "The resulting value in radians"
			}
		}
	},
	"asin": {
		"exprtext": "rnbo_asin(in1)",
		"safeexprtext": "in1 < -1 || in1 > 1 ? 0 : rnbo_asin(in1)",
		"digest": "Arc-sine of the input",
		"comments": [
			"Calculate the arc-sine of the input value. Returns a value in radians.",
			"@seealso rnbo_sinh",
			"@seealso rnbo_asinh",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the arc-sine function."
			},
			"out1": {
				"displayName": "Arc-sine Output (Radians)",
				"digest": "The arc-sine of the input in radians."
			}
		}
	},
	"hypot": {
		"exprtext": "sqrt(in1*in1+in2*in2)",
		"digest": "Hypotenuse of the inputs",
		"comments": [
			"Calculate the hypotenuse of two values.",
			"`h = sqrt(a^2 + b^2)`",
			"@seealso rnbo_cartopol",
			"@seealso rnbo_poltocar",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "a",
				"digest": "Opposite/adjacent side a."
			},
			"in2": {
				"displayName": "b",
				"digest": "Opposite/adjacent side b."
			},
			"out1": {
				"displayName": "Hypotenuse",
				"digest": "The hypotenuse of the two inputs."
			}
		}
	},
	"sin": {
		"exprtext": "rnbo_sin(in1)",
		"digest": "Sine of the input",
		"comments": [
			"Calculate the sine of the input value in radians",
			"@seealso rnbo_sinh",
			"@seealso rnbo_asin",
			"@seealso rnbo_asinh",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the sine function in radians."
			},
			"out1": {
				"displayName": "Sine Output",
				"digest": "The sine of the input."
			}
		}
	},
	"atan2": {
		"exprtext": "rnbo_atan2(in1,in2)",
		"digest": "Two-variable arc-tangent of the inputs",
		"comments": [
			"Calculate the two-variable arc tangent of the given input (returns radians).",
			"`arctan(y/x)`",
			"@seealso atan",
			"@seealso rnbo_atan~",
			"@seealso rnbo_tan",
			"@seealso rnbo_atanh",
			"@seealso rnbo_degrees",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "y",
				"digest": "Input to the arc-tan function."
			},
			"in2": {
				"displayName": "x",
				"digest": "Input to the arc-tan function."
			},
			"out1": {
				"displayName": "Arc-tan Output (Radians)",
				"digest": "The arc-tan of the divided input in radians."
			}
		}
	},
	"cos": {
		"exprtext": "rnbo_cos(in1)",
		"digest": "Cosine of the input",
		"comments": [
			"Calculate the cosine of the input value in radians",
			"@seealso rnbo_cosh",
			"@seealso rnbo_acos",
			"@seealso rnbo_acosh",
			"@seealso rnbo_sin",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the cosine function in radians."
			},
			"out1": {
				"displayName": "Cosine Output",
				"digest": "The cosine of the input."
			}
		}
	},
	"cosT8safe": {
		"exprtext": "cosT8(phasewrap(in1))",
		"digest": "Safe cosine approximation of the input",
		"comments": [
			"8th order Taylor series approximation of the cosine function.",
			"Output is wrapped allowing the cosine to be periodically approximated without divergence.",
			"@seealso rnbo_cos",
			"@seealso rnbo_cosT8",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the Taylor series approximation of cosine."
			},
			"out1": {
				"displayName": "Periodic Cosine Approximation",
				"digest": "The 8th order Taylor series approximation of cosine, wrapped for periodicity."
			}
		}
	},
	"acosh": {
		"exprtext": "rnbo_acosh(in1)",
		"digest": "Inverse hyperbolic cosine of the input",
		"comments": [
			"Calculate the inverse hyperbolic cosine of the input value",
			"@seealso rnbo_cos",
			"@seealso rnbo_acos",
			"@seealso rnbo_cosh",
			"@seealso rnbo_sin",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the inverse hyperbolic cosine function."
			},
			"out1": {
				"displayName": "Inverse Hyperbolic Cosine Output",
				"digest": "The inverse hyperbolic cosine of the input."
			}
		}
	},
	"fastcos": {
		"exprtext": "fastcos(in1)",
		"digest": "Approximated cosine of the input",
		"comments": [
			"Calculate the cosine of the input value in radians. Output value is approximated for faster computation.",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@seealso rnbo_fastsin",
			"@seealso rnbo_fasttan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input (Radians)",
				"digest": "Input to the cosine function in radians."
			},
			"out1": {
				"displayName": "Cosine Output",
				"digest": "The approximated cosine of the input."
			}
		}
	},
	"degrees": {
		"exprtext": "in1*(180/PI)",
		"digest": "Convert radians to degrees",
		"comments": [
			"Converts radians to degrees by performing the following common operation:",
			"```deg = rad * (180 / PI)```",
			"@seealso rnbo_radtodeg",
			"@seealso rnbo_radians",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Trigonometry",
			"@tag RNBO Math",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Radians",
				"digest": "The value in radians to convert"
			},
			"out1": {
				"displayName": "Degrees",
				"digest": "The resulting value in degrees"
			}
		}
	},
	"cosh": {
		"exprtext": "rnbo_cosh(in1)",
		"digest": "Hyperbolic cosine of the input",
		"comments": [
			"Calculate the hyperbolic cosine of the input value",
			"@seealso rnbo_cos",
			"@seealso rnbo_acos",
			"@seealso rnbo_acosh",
			"@seealso rnbo_sin",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the hyperbolic cosine function."
			},
			"out1": {
				"displayName": "Hyperbolic Cosine Output",
				"digest": "The hyperbolic cosine of the input."
			}
		}
	},
	"asinh": {
		"exprtext": "rnbo_asinh(in1)",
		"digest": "Inverse hyperbolic sine of the input",
		"comments": [
			"Calculate the inverse hyperbolic sine of the input value",
			"@seealso rnbo_sin",
			"@seealso rnbo_asin",
			"@seealso rnbo_sinh",
			"@seealso rnbo_cos",
			"@seealso rnbo_tan",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Trigonometry",
			"@category Trigonometry"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to the inverse hyperbolic sine function."
			},
			"out1": {
				"displayName": "Inverse Hyperbolic Sine Output",
				"digest": "The inverse hyperbolic sine of the input."
			}
		}
	},
	"fftsize": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "pfft~ FFT frame size",
		"alias": "FFTSIZE"
	},
	"ffthop": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "pfft~ FFT hop size",
		"alias": "FFTHOP"
	},
	"fftoffset": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "pfft~ FFT offset",
		"alias": "FFTOFFSET"
	},
	"fftfullspect": {
		"exprtext": "NOTIMPLEMENTED",
		"digest": "pfft~ full spectrum flag (0/1)",
		"alias": "FFTFULLSPECT"
	},
	"atodb": {
		"exprtext": "(in1<=0.)?-999.:(20.*log10(in1))",
		"digest": "Convert a linear amplitude to decibels",
		"comments": [
			"Converts any given linear value to its corresponding decibel value.",
			"@seealso rnbo_expr",
			"@seealso rnbo_dbtoa",
			"@seealso rnbo_dbtoa~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Dynamics",
			"@category Conversion"
		],
		"meta": {
			"in1": {
				"displayName": "Amplitude Scalar",
				"digest": "The amplitude to be converted to dB."
			},
			"out1": {
				"displayName": "Gain/Attenuation (dB)",
				"digest": "The gain or attenuation from unity gain, expressed in decibels."
			}
		}
	},
	"dbtoa": {
		"exprtext": "rnbo_pow(10.,in1*0.05)",
		"digest": "Convert decibels to a linear value",
		"comments": [
			"Converts a decibel value to its corresponding linear value.",
			"@seealso rnbo_expr",
			"@seealso rnbo_atodb",
			"@seealso rnbo_atodb~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Dynamics",
			"@category Conversion"
		],
		"meta": {
			"in1": {
				"displayName": "Gain/Attenuation (dB)",
				"digest": "The gain/attenuation in deciBels to be converted to its corresponding linear amplitude."
			},
			"out1": {
				"displayName": "Amplitude Scalar",
				"digest": "The linear amplitude."
			}
		}
	},
	"phasewrap": {
		"exprtext": "wrap(in1,-PI,PI)",
		"digest": "Wrap input values to the range -pi to pi",
		"comments": [
			"@seealso rnbo_wrap",
			"@seealso rnbo_wrap~",
			"@seealso rnbo_sin",
			"@seealso rnbo_cos",
			"@seealso rnbo_radtodeg",
			"@seealso rnbo_degtorad",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Filter",
			"@tag RNBO FFT",
			"@category Bounds"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "Input to be wrapped."
			},
			"out1": {
				"displayName": "Wrapped Output",
				"digest": "The wrapped output around -pi to pi."
			}
		}
	},
	"fixnan": {
		"exprtext": "fixnan(in1)",
		"digest": "Replace NaN (Not a Number) values with zero.",
		"comments": [
			"Replaces NaNs with zero. A NaN (Not a Number) is a floating point data value which represents an undefined or unrepresentable value,",
			"such as the result of dividing by zero. Computations on NaNs produce more NaNs,",
			"and so it is often preferable to replace the NaN with a zero value.",
			"Note that division and modulo operators in gen~ protect against generating NaNs by default,",
			"so this should only be required for protecting against incoming values in exported code.",
			"@seealso rnbo_isnan",
			"@seealso rnbo_isnan~~",
			"@seealso rnbo_fixdenorm",
			"@seealso rnbo_fixdenorm~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Gen-Operators",
			"@tag RNBO DSP",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The value to be fixed if NaN"
			},
			"out1": {
				"displayName": "Fixed Output",
				"digest": "Returns 0 if input value is NaN"
			}
		}
	},
	"isnan": {
		"exprtext": "rnbo_isnan(in1)",
		"digest": "Return 1 if input is NaN (Not a Number), else return zero.",
		"comments": [
			"This operator detects the presence of NaN values, returning 1 if the input is NaN,",
			"and zero otherwise. A NaN (Not a Number) is a floating point data value which represents",
			"an undefined or unrepresentable value, such as the result of dividing by zero.",
			"Note that division and modulo operators in RNBO and gen protect against generating NaNs",
			"by default, so this should only be required for protecting against incoming values in exported code.",
			"@seealso rnbo_fixnan",
			"@seealso rnbo_mod",
			"@seealso rnbo_div",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Gen-Operators",
			"@tag RNBO DSP",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "NaN Input",
				"digest": "The value to be tested for NaN errors"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Returns 1 if input is NaN"
			}
		}
	},
	"fixdenorm": {
		"exprtext": "fixdenorm(in1)",
		"digest": "Replace denormal values with 0.",
		"comments": [
			"Detects denormal numbers and replaces them with zero.",
			"A denormal number is a floating point value very close to zero (filling the underflow gap).",
			"Note that in Max (as of Max 6.0) the x87 control flags are set to flush to zero and disable",
			"exception handling in audio processing, so denormal fixing should only be required for exported code. ",
			"@seealso rnbo_isdenorm",
			"@seealso rnbo_isdenorm~",
			"@seealso rnbo_fixnan",
			"@seealso rnbo_fixnan~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Gen-Operators",
			"@tag RNBO DSP",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The value to be fixed if denormal"
			},
			"out1": {
				"displayName": "Fixed Output",
				"digest": "Returns 0 if input value is denormal"
			}
		}
	},
	"isdenorm": {
		"exprtext": "isdenorm(in1)",
		"digest": "Return 1 if input is a denormal value, else return zero.",
		"comments": [
			"Detects denormal numbers and returns 1 if the input is denormal, and zero otherwise.",
			"A denormal number is a floating point value very close to zero (filling the underflow gap).",
			"Note that in Max (as of Max 6.0) the x87 control flags are set to flush to zero and disable",
			"exception handling in audio processing, so denormal fixing should only be required for exported code. ",
			"@seealso rnbo_fixdenorm",
			"@seealso rnbo_fixdenorm~",
			"@seealso rnbo_isnan",
			"@seealso rnbo_isnan~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Gen-Operators",
			"@tag RNBO DSP",
			"@category Math"
		],
		"meta": {
			"in1": {
				"displayName": "Denormal Input",
				"digest": "The value to be tested as denormal"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Returns 1 if input is denormal"
			}
		}
	},
	"iadd": {
		"exprtext": "(in1 + in2) | 0",
		"digest": "Returns the result of the C-like 32-bit addition of the two parameters.",
		"comments": [
			"Adds two values with correct 32-bit overflow. `2147483647` is the maximum value allowed for 32 bit systems.",
			"@seealso rnbo_add",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"publishAsObject": false,
			"in1": {
				"displayName": "Left Operand",
				"digest": "Set the left inlet value to add"
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Set the value in the right inlet to add "
			},
			"out1": {
				"displayName": "Left + Right",
				"digest": "The summed output from the two inlets"
			}
		}
	},
	"clamp": {
		"exprtext": "in1 > in3 ? in3 : (in1 < in2 ? in2 : in1)",
		"digest": "Clip an input to a range within an upper and lower bound.",
		"alias": "clip",
		"helpname": "clip",
		"comments": [
			"@seealso rnbo_wrap",
			"@seealso rnbo_wrap~",
			"@seealso rnbo_fold",
			"@seealso rnbo_fold~",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Bounds",
			"@tag RNBO Range",
			"@category Bounds"
		],
		"meta": {
			"in1": {
				"displayName": "Input",
				"digest": "The input to be clipped."
			},
			"in2": {
				"displayName": "Lower Bound",
				"digest": "Sets the lower bound of the clip."
			},
			"in3": {
				"displayName": "Upper Bound",
				"digest": "Sets the upper bound of the clip."
			},
			"out1": {
				"displayName": "Clipped Output",
				"digest": "The clipped output."
			}
		}
	},
	"imul": {
		"exprtext": "rnbo_imul(in1, in2)",
		"digest": "Returns the result of the C-like 32-bit multiplication of the two parameters",
		"comments": [
			"Multiply two values with correct 32-bit overflow. `2147483647` is the maximum value allowed for 32 bit systems.",
			"@seealso rnbo_mul",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@category Math"
		],
		"meta": {
			"publishAsObject": false,
			"in1": {
				"displayName": "Left Operand",
				"digest": "Left operand to be multiplied. Event version triggers calculation."
			},
			"in2": {
				"displayName": "Right Operand",
				"digest": "Right operand to be multiplied. Event version must trigger the left inlet in order to perform calculation."
			},
			"out1": {
				"displayName": "Left * Right",
				"digest": "The output product"
			}
		}
	},
	"expm1": {
		"exprtext": "rnbo_expm1(in1)",
		"digest": "Returns e^x - 1, where x is the argument, and e is Euler's number",
		"comments": [
			"@seealso rnbo_e",
			"@seealso rnbo_exp",
			"@tag RNBO",
			"@tag RNBO Operators",
			"@tag RNBO Math",
			"@tag RNBO Powers",
			"@category Powers"
		],
		"meta": {
			"in1": {
				"displayName": "Exponential Value",
				"digest": "Raise e to this value, minus 1"
			},
			"out1": {
				"displayName": "Output",
				"digest": "Outputs e raised to the input value minus 1"
			}
		}
	},
	"number_max": {
		"exprtext": "rnbo_number_max()",
		"digest": "returns the maximum number value that the number system can represent",
		"comments": [
			"@seealso rnbo_gt",
			"@seealso rnbo_lte",
			"@category Comparison"
		],
		"meta": {
			"publishAsObject": false
		}
	},
	"mc_channelcount": {
		"exprtext": "1.",
		"digest": "not supported in RNBO, will always return 1.",
		"meta": {
			"publishAsObject": false
		}
	},
	"mc_channel": {
		"exprtext": "1.",
		"digest": "not supported in RNBO, will always return 1.",
		"meta": {
			"publishAsObject": false
		}
	},
	"uint32_add": {
		"exprtext": "uint32_add(in1, in2)",
		"digest": "Add teo numbers with 32bit integer overflow.",
		"meta": {
			"publishAsObject": false
		}
	},
	"uint32_trunc": {
		"exprtext": "uint32_trunc(in1)",
		"digest": "Cast number to 32bit integer.",
		"meta": {
			"publishAsObject": false
		}
	},
	"uint32_rshift": {
		"exprtext": "uint32_rshift(in1, in2)",
		"digest": "Rshift as 32bit integer.",
		"meta": {
			"publishAsObject": false
		}
	}
}
