mirror of
https://github.com/stedolan/jq.git
synced 2024-05-11 05:55:39 +00:00
Merge pull request #182 from mdaines/sqrt-builtin
Add builtin for calculating square root
This commit is contained in:
11
builtin.c
11
builtin.c
@@ -59,6 +59,15 @@ static jv f_floor(jv input) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static jv f_sqrt(jv input) {
|
||||
if (jv_get_kind(input) != JV_KIND_NUMBER) {
|
||||
return type_error(input, "has no square root");
|
||||
}
|
||||
jv ret = jv_number(sqrt(jv_number_value(input)));
|
||||
jv_free(input);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static jv f_negate(jv input) {
|
||||
if (jv_get_kind(input) != JV_KIND_NUMBER) {
|
||||
return type_error(input, "cannot be negated");
|
||||
@@ -474,6 +483,7 @@ static jv f_error(jv input, jv msg) {
|
||||
|
||||
static const struct cfunction function_list[] = {
|
||||
{(cfunction_ptr)f_floor, "_floor", 1},
|
||||
{(cfunction_ptr)f_sqrt, "_sqrt", 1},
|
||||
{(cfunction_ptr)f_plus, "_plus", 3},
|
||||
{(cfunction_ptr)f_negate, "_negate", 1},
|
||||
{(cfunction_ptr)f_minus, "_minus", 3},
|
||||
@@ -559,6 +569,7 @@ static const char* const jq_builtins[] = {
|
||||
"def max_by(f): _max_by_impl(map([f]));",
|
||||
"def min_by(f): _min_by_impl(map([f]));",
|
||||
"def floor: _floor;",
|
||||
"def sqrt: _sqrt;",
|
||||
"def add: reduce .[] as $x (null; . + $x);",
|
||||
"def del(f): delpaths([path(f)]);",
|
||||
"def _assign(paths; value): value as $v | reduce path(paths) as $p (.; setpath($p; $v));",
|
||||
|
||||
@@ -633,6 +633,16 @@ sections:
|
||||
input: '3.14159'
|
||||
output: ['3']
|
||||
|
||||
- title: `sqrt`
|
||||
body: |
|
||||
|
||||
The `sqrt` function returns the square root of its numeric input.
|
||||
|
||||
examples:
|
||||
- program: 'sqrt'
|
||||
input: '9'
|
||||
output: ['3']
|
||||
|
||||
- title: `tonumber`
|
||||
body: |
|
||||
|
||||
|
||||
@@ -366,6 +366,14 @@ null
|
||||
[-1.1,1.1,1.9]
|
||||
[-2, 1, 1]
|
||||
|
||||
[.[]|sqrt]
|
||||
[4,9]
|
||||
[2,3]
|
||||
|
||||
(add / length) as $m | map((. - $m) as $d | $d * $d) | add / length | sqrt
|
||||
[2,4,4,4,5,5,7,9]
|
||||
2
|
||||
|
||||
def f(x): x | x; f([.], . + [42])
|
||||
[1,2,3]
|
||||
[[[1,2,3]]]
|
||||
|
||||
Reference in New Issue
Block a user