func lagrangeInterpolate(points map[int]*big.Int, x int, curve elliptic.Curve) *big.Int {
	log.Printf("The points is: %v", points)
	polynomialClient := polynomial.New(curve.Params().N)
	result := polynomialClient.GetPolynomialByPoints(points)
	secret := result[len(result)-1]
	log.Printf("The coefficients of the polynomial is: %v", result)
	return secret
}
Lagrange Polynomial Interpolation Formula
package complex_secret_share
import (
	"crypto/elliptic"
	"errors"
	"log"
	"math/big"
	polynomial "github.com/xuperchain/crypto/common/math/big_polynomial"
)
var (
	EmptyMessageError = errors.New("The message to be signed should not be empty")
)
func ComplexSecretRetrieve(shares map[int]*big.Int, curve elliptic.Curve) ([]byte, error) {
	secretInt := lagrangeInterpolate(shares, 0, curve)
	secret := secretInt.Bytes()
	return secret, nil
}