Add support for float numbers in rem() arguments (#4858)
* Add support for float numbers in rem() arguments * Update docs * Rename to prevent name collision in docs * Update docs after rename to NumberArg * Fix parameter types to follow naming convention * Change doc comment description to not refer to floating point * Update docs after NumberArg doc change * Change function to be more condensed * Change to not try to preserve ints * Update docs to use f64 * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-macos-8-cores) * Trigger CI --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
@ -153550,12 +153550,12 @@
|
|||||||
"args": [
|
"args": [
|
||||||
{
|
{
|
||||||
"name": "num",
|
"name": "num",
|
||||||
"type": "i64",
|
"type": "number",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "int64",
|
"title": "double",
|
||||||
"type": "integer",
|
"type": "number",
|
||||||
"format": "int64"
|
"format": "double"
|
||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"description": "The number which will be divided by `divisor`.",
|
"description": "The number which will be divided by `divisor`.",
|
||||||
@ -153563,12 +153563,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "divisor",
|
"name": "divisor",
|
||||||
"type": "i64",
|
"type": "number",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "int64",
|
"title": "double",
|
||||||
"type": "integer",
|
"type": "number",
|
||||||
"format": "int64"
|
"format": "double"
|
||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"description": "The number which will divide `num`.",
|
"description": "The number which will divide `num`.",
|
||||||
@ -153577,12 +153577,12 @@
|
|||||||
],
|
],
|
||||||
"returnValue": {
|
"returnValue": {
|
||||||
"name": "",
|
"name": "",
|
||||||
"type": "i64",
|
"type": "number",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "int64",
|
"title": "double",
|
||||||
"type": "integer",
|
"type": "number",
|
||||||
"format": "int64"
|
"format": "double"
|
||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"labelRequired": true
|
"labelRequired": true
|
||||||
@ -153590,7 +153590,7 @@
|
|||||||
"unpublished": false,
|
"unpublished": false,
|
||||||
"deprecated": false,
|
"deprecated": false,
|
||||||
"examples": [
|
"examples": [
|
||||||
"assertEqual(rem(7, divisor = 4), 3, 0.01, \"remainder is 3\")\nassertEqual(rem(-7, divisor = 4), -3, 0.01, \"remainder is -3\")\nassertEqual(rem(7, divisor = -4), 3, 0.01, \"remainder is 3\")"
|
"assertEqual(rem(7, divisor = 4), 3, 0.01, \"remainder is 3\")\nassertEqual(rem(-7, divisor = 4), -3, 0.01, \"remainder is -3\")\nassertEqual(rem(7, divisor = -4), 3, 0.01, \"remainder is 3\")\nassertEqual(rem(6, divisor = 2.5), 1, 0.01, \"remainder is 1\")\nassertEqual(rem(6.5, divisor = 2.5), 1.5, 0.01, \"remainder is 1.5\")\nassertEqual(rem(6.5, divisor = 2), 0.5, 0.01, \"remainder is 0.5\")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -322,15 +322,6 @@ impl Args {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn make_user_val_from_i64(&self, n: i64) -> KclValue {
|
|
||||||
KclValue::Int {
|
|
||||||
value: n,
|
|
||||||
meta: vec![Metadata {
|
|
||||||
source_range: self.source_range,
|
|
||||||
}],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) fn make_user_val_from_f64_array(&self, f: Vec<f64>) -> Result<KclValue, KclError> {
|
pub(crate) fn make_user_val_from_f64_array(&self, f: Vec<f64>) -> Result<KclValue, KclError> {
|
||||||
let array = f
|
let array = f
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|||||||
@ -16,9 +16,9 @@ use super::args::FromArgs;
|
|||||||
pub async fn rem(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn rem(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let n = args.get_unlabeled_kw_arg("number to divide")?;
|
let n = args.get_unlabeled_kw_arg("number to divide")?;
|
||||||
let d = args.get_kw_arg("divisor")?;
|
let d = args.get_kw_arg("divisor")?;
|
||||||
let result = inner_rem(n, d)?;
|
let remainder = inner_rem(n, d);
|
||||||
|
|
||||||
Ok(args.make_user_val_from_i64(result))
|
Ok(args.make_user_val_from_f64(remainder))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Compute the remainder after dividing `num` by `div`.
|
/// Compute the remainder after dividing `num` by `div`.
|
||||||
@ -28,6 +28,9 @@ pub async fn rem(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kc
|
|||||||
/// assertEqual(rem( 7, divisor = 4), 3, 0.01, "remainder is 3" )
|
/// assertEqual(rem( 7, divisor = 4), 3, 0.01, "remainder is 3" )
|
||||||
/// assertEqual(rem(-7, divisor = 4), -3, 0.01, "remainder is -3")
|
/// assertEqual(rem(-7, divisor = 4), -3, 0.01, "remainder is -3")
|
||||||
/// assertEqual(rem( 7, divisor = -4), 3, 0.01, "remainder is 3" )
|
/// assertEqual(rem( 7, divisor = -4), 3, 0.01, "remainder is 3" )
|
||||||
|
/// assertEqual(rem( 6, divisor = 2.5), 1, 0.01, "remainder is 1" )
|
||||||
|
/// assertEqual(rem( 6.5, divisor = 2.5), 1.5, 0.01, "remainder is 1.5" )
|
||||||
|
/// assertEqual(rem( 6.5, divisor = 2), 0.5, 0.01, "remainder is 0.5" )
|
||||||
/// ```
|
/// ```
|
||||||
#[stdlib {
|
#[stdlib {
|
||||||
name = "rem",
|
name = "rem",
|
||||||
@ -39,8 +42,8 @@ pub async fn rem(_exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kc
|
|||||||
divisor = "The number which will divide `num`.",
|
divisor = "The number which will divide `num`.",
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
fn inner_rem(num: i64, divisor: i64) -> Result<i64, KclError> {
|
fn inner_rem(num: f64, divisor: f64) -> f64 {
|
||||||
Ok(num % divisor)
|
num % divisor
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Compute the cosine of a number (in radians).
|
/// Compute the cosine of a number (in radians).
|
||||||
|
|||||||
Reference in New Issue
Block a user