| 810 | Datum float8arr_dot(PG_FUNCTION_ARGS); |
| 811 | PG_FUNCTION_INFO_V1( float8arr_dot); |
| 812 | Datum float8arr_dot(PG_FUNCTION_ARGS) { |
| 813 | ArrayType *arr_left = PG_GETARG_ARRAYTYPE_P(0); |
| 814 | ArrayType *arr_right = PG_GETARG_ARRAYTYPE_P(1); |
| 815 | SparseData left = sdata_uncompressed_from_float8arr_internal(arr_left); |
| 816 | SparseData right = sdata_uncompressed_from_float8arr_internal(arr_right); |
| 817 | SparseData mult_result; |
| 818 | double accum; |
| 819 | |
| 820 | mult_result = op_sdata_by_sdata(multiply,left,right); |
| 821 | accum = sum_sdata_values_double(mult_result); |
| 822 | freeSparseData(left); |
| 823 | freeSparseData(right); |
| 824 | freeSparseDataAndData(mult_result); |
| 825 | |
| 826 | if (IS_NVP(accum)) PG_RETURN_NULL(); |
| 827 | |
| 828 | PG_RETURN_FLOAT8(accum); |
| 829 | } |
| 830 | |
| 831 | /* |
| 832 | * Permute the basic operators (minus,plus,mult,div) between SparseData |
nothing calls this directly
no test coverage detected