// Created by GS <sgazeos@gmail.com> at 11/12/2018
//
#include<op_boilerplate.h>
#if NOT_EXCLUDED(OP_cholesky)
#include<ops/declarable/CustomOperations.h>
#include<ops/declarable/helpers/lup.h>
namespacend4j{
namespaceops{
OP_IMPL(cholesky,1,1,true){
NDArray*input=INPUT_VARIABLE(0);
NDArray*output=OUTPUT_VARIABLE(0);
REQUIRE_TRUE(input->rankOf()>=2,0,"cholesky: The rank of input array should not less than 2, but %i is given",input->rankOf());
REQUIRE_TRUE(input->sizeAt(-1)==input->sizeAt(-2),0,"cholesky: The last two dimmensions should be equal, but %i and %i are given",input->sizeAt(-1),input->sizeAt(-2));
REQUIRE_TRUE(helpers::checkCholeskyInput(block.launchContext(),input),0,"cholesky: The input tensor should be positive-defined and symmetric.");