#ifndef _NTPM_AI_WEIGHT_H
#define _NTPM_AI_WEIGHT_H

#include <arithmetic_iterators/linalg.h>
#include <arithmetic_iterators/ai_binary.h>

namespace NTPMai {



// handles dot multiplitication (weighting) of all promises.
//  returns a generic promise.
template <class T_PROMISE1, class T_PROMISE2>
typename BINOP_Deffer<T_PROMISE1,T_PROMISE2,
                      NTPM::general_multiplies<typename T_PROMISE1::value_type,
					       typename T_PROMISE2::value_type,
				               typename T_PROMISE1::value_type>
                     >::V
weight(T_PROMISE1 p1, T_PROMISE2 p2)
{
    return make_binary_op_promise(p1, p2,
				  NTPM::general_multiplies<typename T_PROMISE1::value_type,
				             typename T_PROMISE2::value_type,
				  	     typename T_PROMISE1::value_type>
				             ());
}


}

#endif // _NTPM_AI_WEIGHT_H
