/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.33
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package org.quantlib;

public class QuantLib {
  public static Matrix transpose(Matrix m) {
    return new Matrix(QuantLibJNI.transpose(Matrix.getCPtr(m), m), true);
  }

  public static Matrix outerProduct(Array v1, Array v2) {
    return new Matrix(QuantLibJNI.outerProduct(Array.getCPtr(v1), v1, Array.getCPtr(v2), v2), true);
  }

  public static Matrix pseudoSqrt(Matrix m, SalvagingAlgorithm.Type a) {
    return new Matrix(QuantLibJNI.pseudoSqrt(Matrix.getCPtr(m), m, a.swigValue()), true);
  }

  public static int nullInt() {
    return QuantLibJNI.nullInt();
  }

  public static double nullDouble() {
    return QuantLibJNI.nullDouble();
  }

  public static Leg FixedRateLeg(Schedule schedule, DayCounter dayCount, DoubleVector nominals, DoubleVector couponRates, BusinessDayConvention paymentAdjustment, DayCounter firstPeriodDayCount) {
    return new Leg(QuantLibJNI.FixedRateLeg(Schedule.getCPtr(schedule), schedule, DayCounter.getCPtr(dayCount), dayCount, DoubleVector.getCPtr(nominals), nominals, DoubleVector.getCPtr(couponRates), couponRates, paymentAdjustment.swigValue(), DayCounter.getCPtr(firstPeriodDayCount), firstPeriodDayCount), true);
  }

  public static Leg IborLeg(DoubleVector nominals, Schedule schedule, IborIndex index, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, SWIGTYPE_p_std__vectorTunsigned_int_t fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, boolean isInArrears) {
    return new Leg(QuantLibJNI.IborLeg(DoubleVector.getCPtr(nominals), nominals, Schedule.getCPtr(schedule), schedule, IborIndex.getCPtr(index), index, DayCounter.getCPtr(paymentDayCounter), paymentDayCounter, paymentConvention.swigValue(), SWIGTYPE_p_std__vectorTunsigned_int_t.getCPtr(fixingDays), DoubleVector.getCPtr(gearings), gearings, DoubleVector.getCPtr(spreads), spreads, DoubleVector.getCPtr(caps), caps, DoubleVector.getCPtr(floors), floors, isInArrears), true);
  }

  public static Leg CmsLeg(DoubleVector nominals, Schedule schedule, SwapIndex index, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, SWIGTYPE_p_std__vectorTunsigned_int_t fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors, boolean isInArrears) {
    return new Leg(QuantLibJNI.CmsLeg(DoubleVector.getCPtr(nominals), nominals, Schedule.getCPtr(schedule), schedule, SwapIndex.getCPtr(index), index, DayCounter.getCPtr(paymentDayCounter), paymentDayCounter, paymentConvention.swigValue(), SWIGTYPE_p_std__vectorTunsigned_int_t.getCPtr(fixingDays), DoubleVector.getCPtr(gearings), gearings, DoubleVector.getCPtr(spreads), spreads, DoubleVector.getCPtr(caps), caps, DoubleVector.getCPtr(floors), floors, isInArrears), true);
  }

  public static Leg CmsZeroLeg(DoubleVector nominals, Schedule schedule, SwapIndex index, DayCounter paymentDayCounter, BusinessDayConvention paymentConvention, SWIGTYPE_p_std__vectorTunsigned_int_t fixingDays, DoubleVector gearings, DoubleVector spreads, DoubleVector caps, DoubleVector floors) {
    return new Leg(QuantLibJNI.CmsZeroLeg(DoubleVector.getCPtr(nominals), nominals, Schedule.getCPtr(schedule), schedule, SwapIndex.getCPtr(index), index, DayCounter.getCPtr(paymentDayCounter), paymentDayCounter, paymentConvention.swigValue(), SWIGTYPE_p_std__vectorTunsigned_int_t.getCPtr(fixingDays), DoubleVector.getCPtr(gearings), gearings, DoubleVector.getCPtr(spreads), spreads, DoubleVector.getCPtr(caps), caps, DoubleVector.getCPtr(floors), floors), true);
  }

  public static Matrix getCovariance(Array volatilities, Matrix correlations) {
    return new Matrix(QuantLibJNI.getCovariance(Array.getCPtr(volatilities), volatilities, Matrix.getCPtr(correlations), correlations), true);
  }

}
