| /* ----------------------------------------------------------------------- *//** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *//* ----------------------------------------------------------------------- */ |
| |
| /* ----------------------------------------------------------------------------- |
| * Test linear-algebra operations. |
| * -------------------------------------------------------------------------- */ |
| |
| \set p 3 |
| |
| SELECT |
| closest_columns( |
| ARRAY[ |
| ARRAY[0,0], |
| ARRAY[0,1], |
| ARRAY[1,0], |
| ARRAY[0,1] |
| ]::DOUBLE PRECISION[][], |
| ARRAY[.5,.5]::DOUBLE PRECISION[], |
| 2::INTEGER |
| ); |
| |
| CREATE TABLE some_vectors ( |
| id SERIAL, |
| x FLOAT8[] |
| ); |
| |
| INSERT INTO some_vectors(x) VALUES |
| (ARRAY[1,0,0,0]), |
| (ARRAY[0,1,0,0]), |
| (ARRAY[0,0,1,0]), |
| (ARRAY[0,0,0,2]); |
| |
| |
| SELECT matrix_column(matrix, 0), matrix_column(matrix, 1) |
| FROM ( |
| SELECT ARRAY[ARRAY[1,2],ARRAY[3,4]]::DOUBLE PRECISION[][] AS matrix |
| ) ignored; |
| |
| SELECT index_2d_array(ARRAY[ARRAY[1,2],ARRAY[3,4]]::float8[], 2); |
| --------------------------------------------------------------------------- |
| SELECT * FROM deconstruct_2d_array(array[[1,2],[5,6]]) as k(id int, a float8, b float8); |
| |
| --------------------------------------------------------------------------- |
| -- user doc examples |
| --------------------------------------------------------------------------- |
| CREATE TABLE two_vectors( |
| id integer, |
| a float8[], |
| b float8[]); |
| INSERT INTO two_vectors VALUES |
| (1, '{3,4}', '{4,5}'), |
| (2, '{1,1,0,-4,5,3,4,106,14}', '{1,1,0,6,-3,1,2,92,2}'); |
| |
| SELECT |
| id, |
| norm1(a), |
| norm2(a) |
| FROM two_vectors |
| WHERE id = 2; |
| |
| SELECT |
| id, |
| dist_norm1(a, b), |
| dist_norm2(a, b), |
| dist_pnorm(a, b, 5), |
| dist_inf_norm(a, b), |
| squared_dist_norm2(a, b), |
| dist_angle(a, b), |
| dist_tanimoto(a, b) |
| FROM two_vectors |
| WHERE id = 2; |
| |
| --------------------------------------------------------------------------- |
| CREATE TABLE matrix( |
| id integer, |
| m float8[]); |
| INSERT INTO matrix VALUES |
| (1, '{{4,5},{3,5},{9,0}}'); |
| |
| SELECT |
| get_row(m, 1) AS row_1, |
| get_row(m, 2) AS row_2, |
| get_row(m, 3) AS row_3, |
| get_col(m, 1) AS col_1, |
| get_col(m, 2) AS col_2 |
| FROM matrix; |
| |
| --------------------------------------------------------------------------- |
| CREATE TABLE vector( |
| id integer, |
| v float8[]); |
| INSERT INTO vector VALUES |
| (1, '{4,3}'), |
| (2, '{8,6}'), |
| (3, '{12,9}'); |
| |
| SELECT |
| avg(v), |
| normalized_avg(v), |
| matrix_agg(v) |
| FROM vector; |
| ------------------------------------------------------------------------- |
| |
| -- adding 1.0 on left and right to avoid division by zero |
| SELECT dist_jaccard(ARRAY['a', 'b', 'c']::TEXT[], ARRAY['a', 'b', 'c']::TEXT[]); |
| |
| ------------------------------------------------------------------------- |