// Path: BirIslem/src/main/java/birislem/exception/EarlyConvergenceException.java
// public class EarlyConvergenceException extends Exception {
//     private static final long serialVersionUID = 1L;
// 
//     // Hangi operatorde hedef sayiya ulastik
//     private final int whichOperator;
// 
//     public EarlyConvergenceException(int whichOperator) {
//         super();
//         this.whichOperator = whichOperator;
//     }
// 
//     public int getWhichOperator() {
//         return this.whichOperator;
//     }
// }
// 
// Path: BirIslem/src/main/java/birislem/exception/FractionDivideException.java
// public class FractionDivideException extends Exception {
//     private static final long serialVersionUID = 1L;
//     // FIX Performans kazanci
//     // Her seferinde bu istisnadan yeni bir tane yaratmak yerine
//     // tum uygulamada sadece bir ornegini kullanmak icin
//     // singleton kullaniliyor
//     private static FractionDivideException instance = null;
// 
//     private FractionDivideException() {
// 
//     }
// 
//     public static FractionDivideException getInstance() {
//         if (instance == null) {
//             instance = new FractionDivideException();
//         }
//         return instance;
//     }
// 
// }


import java.util.Random;
import birislem.exception.EarlyConvergenceException;
import birislem.exception.FractionDivideException;
    /**
     * Rastgele uretilen noktali sayi ureten metot
     *
     * @return rastgele uretilmis noktali sayi
     */
    public float nextFloat() {
        return generator.nextFloat();
    }

    /**
     * 0 ile (ustSinir-1) arasinda rastgele tamsayi ureten metot
     *
     * @param ustSinir araligin ust siniri
     * @return uretilen rastgele sayi
     */
    public int nextInt(int ustSinir) {

        return generator.nextInt(ustSinir);
    }

    /**
     * Bu metot girilen parametrelere gore hesaplama sonucunu uretiyor
     *
     * @param sayilar     hesaplamada kullanilacak sayilara indisler
     * @param operatorler hesaplamada kullanilacak operatorler
     * @return hesaplama sonucu (tamsayi)
     * @throws FractionDivideException   eger bolme islemi tamsayi sonuc uretmiyorsa
     * @throws EarlyConvergenceException hesaplamanin erken asamalarinda hedefe ulasirsak
     */
    public int getHesapSonuc(int[] sayilar, int[] operatorler)
// Path: BirIslem/src/main/java/birislem/exception/EarlyConvergenceException.java
// public class EarlyConvergenceException extends Exception {
//     private static final long serialVersionUID = 1L;
// 
//     // Hangi operatorde hedef sayiya ulastik
//     private final int whichOperator;
// 
//     public EarlyConvergenceException(int whichOperator) {
//         super();
//         this.whichOperator = whichOperator;
//     }
// 
//     public int getWhichOperator() {
//         return this.whichOperator;
//     }
// }
// 
// Path: BirIslem/src/main/java/birislem/exception/FractionDivideException.java
// public class FractionDivideException extends Exception {
//     private static final long serialVersionUID = 1L;
//     // FIX Performans kazanci
//     // Her seferinde bu istisnadan yeni bir tane yaratmak yerine
//     // tum uygulamada sadece bir ornegini kullanmak icin
//     // singleton kullaniliyor
//     private static FractionDivideException instance = null;
// 
//     private FractionDivideException() {
// 
//     }
// 
//     public static FractionDivideException getInstance() {
//         if (instance == null) {
//             instance = new FractionDivideException();
//         }
//         return instance;
//     }
// 
// }


// Path: BirIslem/src/main/java/birislem/utility/NumberUtility.java
import java.util.Random;
import birislem.exception.EarlyConvergenceException;
import birislem.exception.FractionDivideException;

    /**
     * Rastgele uretilen noktali sayi ureten metot
     *
     * @return rastgele uretilmis noktali sayi
     */
    public float nextFloat() {
        return generator.nextFloat();
    }

    /**
     * 0 ile (ustSinir-1) arasinda rastgele tamsayi ureten metot
     *
     * @param ustSinir araligin ust siniri
     * @return uretilen rastgele sayi
     */
    public int nextInt(int ustSinir) {

        return generator.nextInt(ustSinir);
    }

    /**
     * Bu metot girilen parametrelere gore hesaplama sonucunu uretiyor
     *
     * @param sayilar     hesaplamada kullanilacak sayilara indisler
     * @param operatorler hesaplamada kullanilacak operatorler
     * @return hesaplama sonucu (tamsayi)
     * @throws FractionDivideException   eger bolme islemi tamsayi sonuc uretmiyorsa
     * @throws EarlyConvergenceException hesaplamanin erken asamalarinda hedefe ulasirsak
     */
    public int getHesapSonuc(int[] sayilar, int[] operatorler)
            throws FractionDivideException, EarlyConvergenceException {