func NewDDHMultiFromParams(slots int, params *DDHParams) *DDHMulti {
	return &DDHMulti{
		Slots: slots,
		DDH:   &DDH{params},
	}
}
NewDDHMultiFromParams takes the number of slots and configuration
parameters of an existing DDH scheme instance, and reconstructs
the scheme with same configuration parameters.

It returns a new DDHMulti instance.
package simple
import (
	"fmt"
	"math/big"
	"github.com/fentec-project/gofe/data"
	"github.com/fentec-project/gofe/sample"
)
type DDHMulti struct {
	Slots int
	*DDH
}
type DDHMultiClient struct {
	*DDH
}
func NewDDHMulti(slots, l, modulusLength int, bound *big.Int) (*DDHMulti, error) {
	ddh, err := NewDDH(l, modulusLength, bound)
	if err != nil {
		return nil, err
	}
	return &DDHMulti{
		Slots: slots,
		DDH:   ddh,
	}, nil
}
func NewDDHMultiPrecomp(slots, l, modulusLength int, bound *big.Int) (*DDHMulti, error) {
	ddh, err := NewDDHPrecomp(l, modulusLength, bound)
	if err != nil {
		return nil, err
	}
	return &DDHMulti{
		Slots: slots,
		DDH:   ddh,
	}, nil
}