Changeset 0c2a2e in git
- Timestamp:
- Sep 27, 2023, 1:26:41 PM (8 months ago)
- Branches:
- (u'spielwiese', 'd08f5f0bb3329b8ca19f23b74cb1473686415c3a')
- Children:
- 3d86bb7cdede7aa763e50a9436afbeb714fc26c2
- Parents:
- 8bdde5e4b92ee38ec82a194d2a8c7f52517dd2e2
- Location:
- Singular/LIB
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/.singularhistory
r8bdde5 r0c2a2e 2593 2593 timer - t; 2594 2594 list l1 = integralBasis(f, 2, "atOrigin"); 2595 2596 2595 l1 2597 2596 ; 2597 LIB"integralbasis.lib"; 2598 ring r = 0,(x,y),dp; 2599 poly f = (y^5 + y^4*x^7 + 2*x^8) * (y^3 + 7*x^4) * (y^7 + 2*x^12) * (y^11 + 2*x^18) + y^30; 2600 int t = timer; 2601 list l1 = integralBasis(f, 2, "atOrigin"); 2602 LIB"integralbasis.lib"; 2603 ring r = 0,(x,y),(dp, L(100000)); 2604 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52) + y^36; 2605 int t = timer; 2606 list l1 = integralBasis(f, 2); 2607 ibSeg[1] 2608 segmentSlope 2609 out 2610 LIB"integralbasis.lib"; 2611 ring r = 0,(x,y),(dp, L(100000)); 2612 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 2613 int t = timer; 2614 list l1 = integralBasis(f, 2); 2615 LIB"integralbasis.lib"; 2616 ring r = 0,(x,y),(dp, L(100000)); 2617 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 2618 int t = timer; 2619 list l1 = integralBasis(f, 2, "atOrigin"); 2620 timer - t; 2621 LIB"integralbasis.lib"; 2622 ring r = 0,(x,y),(dp, L(100000)); 2623 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 2624 int t = timer; 2625 list l1 = integralBasis(f, 2, "atOrigin"); 2626 timer - t; 2627 LIB"integralbasis.lib"; 2628 ring r = 0,(x,y),(dp, L(100000)); 2629 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 2630 int t = timer; 2631 list l1 = integralBasis(f, 2, "atOrigin"); 2632 timer - t; 2633 l1; 2634 t = timer; 2635 list l2 = integralBasis(f, 2, "noOpti"); 2636 timer - t; 2637 LIB"integralbasis.lib"; 2638 ring r = 0,(x,y),(dp, L(100000)); 2639 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 2640 int t = timer; 2641 list l1 = integralBasis(f, 2, "atOrigin"); 2642 timer - t; 2643 t = timer; 2644 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2645 timer - t; 2646 LIB"integralbasis.lib"; 2647 ring r = 0,(x,y),(dp, L(100000)); 2648 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2649 int t = timer; 2650 list l1 = integralBasis(f, 2, "atOrigin"); 2651 timer - t; 2652 t = timer; 2653 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2654 timer - t; 2655 reduce(l1[1], groebner(l2[1])); 2656 reduce(l2[1], groebner(l1[1])); 2657 with(algcurves); 2658 f := (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2659 intBasis := integral_basis(f, x, y, {x}); 2660 LIB"integralbasis.lib"; 2661 ring r = 0,(x,y),(dp, L(100000)); 2662 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2663 int t = timer; 2664 list l1 = integralBasis(f, 2, "atOrigin"); 2665 l1; 2666 LIB"integralbasis.lib"; 2667 ring r = 0,(x,y),(dp, L(100000)); 2668 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2669 int t = timer; 2670 list l1 = integralBasis(f, 2, "atOrigin"); 2671 timer - t; 2672 t = timer; 2673 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2674 timer - t; 2675 [200~reduce(l1[1], groebner(l2[1])); 2676 reduce(l2[1], groebner(l1[1])); 2677 LIB"integralbasis.lib"; 2678 ring r = 0,(x,y),(dp, L(100000)); 2679 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2680 int t = timer; 2681 list l1 = integralBasis(f, 2, "atOrigin"); 2682 timer - t; 2683 t = timer; 2684 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2685 timer - t; 2686 reduce(l1[1], groebner(l2[1])); 2687 reduce(l2[1], groebner(l1[1])); 2688 LIB"integralbasis.lib"; 2689 ring r = 0,(x,y),(dp, L(100000)); 2690 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2691 int t = timer; 2692 list l1 = integralBasis(f, 2, "atOrigin"); 2693 timer - t; 2694 t = timer; 2695 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2696 timer - t; 2697 reduce(l1[1], groebner(l2[1])); 2698 reduce(l2[1], groebner(l1[1])); 2699 LIB"integralbasis.lib"; 2700 ring r = 0,(x,y),(dp, L(100000)); 2701 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2702 int t = timer; 2703 list l1 = integralBasis(f, 2, "atOrigin"); 2704 timer - t; 2705 t = timer; 2706 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2707 timer - t; 2708 reduce(l1[1], groebner(l2[1])); 2709 reduce(l2[1], groebner(l1[1])); 2710 LIB"integralbasis.lib"; 2711 ring r = 0,(x,y),(dp, L(100000)); 2712 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2) + y^25; 2713 int t = timer; 2714 list l1 = integralBasis(f, 2, "atOrigin"); 2715 l1; 2716 timer - t; 2717 t = timer; 2718 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2719 timer - t; 2720 reduce(l1[1], groebner(l2[1])); 2721 reduce(l2[1], groebner(l1[1])); 2722 LIB"integralbasis.lib"; 2723 ring r = 0,(x,y),(dp, L(100000)); 2724 poly f = (y^5 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^34; 2725 int t = timer; 2726 list l1 = integralBasis(f, 2, "atOrigin"); 2727 timer - t; 2728 t = timer; 2729 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2730 timer - t; 2731 reduce(l1[1], groebner(l2[1])); 2732 reduce(l2[1], groebner(l1[1])); 2733 LIB"integralbasis.lib"; 2734 ring r = 0,(x,y),(dp, L(100000)); 2735 poly f = (y^15 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^44; 2736 int t = timer; 2737 list l1 = integralBasis(f, 2, "atOrigin"); 2738 timer - t; 2739 t = timer; 2740 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2741 timer - t; 2742 reduce(l1[1], groebner(l2[1])); 2743 reduce(l2[1], groebner(l1[1])); 2744 LIB"integralbasis.lib"; 2745 ring r = 0,(x,y),(dp, L(100000)); 2746 poly f = (y^15 + 2*x^7)*(y^15 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^60; 2747 int t = timer; 2748 list l1 = integralBasis(f, 2, "atOrigin"); 2749 timer - t; 2750 t = timer; 2751 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2752 timer - t; 2753 LIB"integralbasis.lib"; 2754 ring r = 0,(x,y),(dp, L(100000)); 2755 poly f = (y^15 + 2*x^7)*(y^15 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^60; 2756 int t = timer; 2757 list l1 = integralBasis(f, 2, "atOrigin"); 2758 timer - t; 2759 l1; 2760 LIB"integralbasis.lib"; 2761 ring r = 0, (x,y), dp; 2762 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2763 int t = timer; 2764 list l1 = integralBasis(f,2, "atOrigin"); 2765 LIB"integralbasis.lib"; 2766 ring r = 0, (x,y), dp; 2767 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2768 int t = timer; 2769 list l1 = integralBasis(f,2, "atOrigin"); 2770 LIB"integralbasis.lib"; 2771 ring r = 0, (x,y), dp; 2772 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2773 int t = timer; 2774 list l1 = integralBasis(f,2, "atOrigin"); 2775 LIB"integralbasis.lib"; 2776 ring r = 0, (x,y), dp; 2777 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2778 int t = timer; 2779 list l1 = integralBasis(f,2, "atOrigin"); 2780 basering 2781 fFrac 2782 LIB"integralbasis.lib"; 2783 ring r = 0, (x,y), dp; 2784 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2785 int t = timer; 2786 list l1 = integralBasis(f,2, "atOrigin"); 2787 fNew 2788 sD 2789 setring R 2790 fFrac 2791 printlevel = 5; 2792 LIB"integralbasis.lib"; 2793 ring r = 0, (x,y), dp; 2794 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2795 int t = timer; 2796 list l1 = integralBasis(f,2, "atOrigin"); 2797 printlevel = 5; 2798 LIB"integralbasis.lib"; 2799 ring r = 0, (x,y), dp; 2800 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2801 int t = timer; 2802 list l1 = integralBasis(f,2, "atOrigin"); 2803 classes 2804 def S = classes[1][1]; 2805 setring S 2806 PE 2807 basering 2808 LIB"integralbasis.lib"; 2809 ring r = 0, (x,y), dp; 2810 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2811 int t = timer; 2812 list l1 = integralBasis(f,2, "atOrigin"); 2813 LIB"integralbasis.lib"; 2814 ring r = 0, (x,y), dp; 2815 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2816 int t = timer; 2817 list l1 = integralBasis(f,2, "atOrigin"); 2818 classes 2819 def S = classes[1][1]; 2820 setring S; 2821 PE 2822 setring R; 2823 f 2824 list l = puiseux(f, -1, 1); 2825 l; 2826 with(algcurves); 2827 f := (y^7 + x^4) * (y^7 + y^5*x^3 + x^4)+y^16; 2828 puiseux(f,x=0,y,0); 2829 LIB"integralbasis.lib"; 2830 ring r = 0, (x,y), dp; 2831 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2832 int t = timer; 2833 list l1 = integralBasis(f,2, "atOrigin"); 2834 LIB"integralbasis.lib"; 2835 ring r = 0, (x,y), dp; 2836 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2837 int t = timer; 2838 list l1 = integralBasis(f,2, "atOrigin"); 2839 fFr 2840 den 2841 basering 2842 PE 2843 LIB"integralbasis.lib"; 2844 ring r = 0, (x,y), dp; 2845 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2846 int t = timer; 2847 list l1 = integralBasis(f,2, "atOrigin"); 2848 setring S 2849 PE 2850 setring R 2851 fFr 2852 dMP 2853 pardeg(minpoly); 2854 LIB"integralbasis.lib"; 2855 ring r = 0, (x,y), dp; 2856 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2857 int t = timer; 2858 list l1 = integralBasis(f,2, "atOrigin"); 2859 d 2860 setring S; 2861 PE 2862 LIB"integralbasis.lib"; 2863 ring r = 0, (x,y), dp; 2864 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2865 int t = timer; 2866 list l1 = integralBasis(f,2, "atOrigin"); 2867 fFr 2868 LIB"integralbasis.lib"; 2869 ring r = 0, (x,y), dp; 2870 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2871 int t = timer; 2872 list l1 = integralBasis(f,2, "atOrigin"); 2873 fF 2874 basering; 2875 den 2876 d 2877 buildPolyGroundXRoot(fFr, den, d); 2878 LIB"integralbasis.lib"; 2879 ring r = 0, (x,y), dp; 2880 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2881 int t = timer; 2882 list l1 = integralBasis(f,2, "atOrigin"); 2883 buildPolyGroundXRoot(fF, den, d); 2884 LIB"integralbasis.lib"; 2885 ring r = 0, (x,y), dp; 2886 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2887 int t = timer; 2888 list l1 = integralBasis(f,2, "atOrigin"); 2889 LIB"integralbasis.lib"; 2890 ring r = 0, (x,y), dp; 2891 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2892 int t = timer; 2893 list l1 = integralBasis(f,2, "atOrigin"); 2894 LIB"integralbasis.lib"; 2895 ring r = 0, (x,y), dp; 2896 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2897 int t = timer; 2898 list l1 = integralBasis(f,2, "atOrigin"); 2899 LIB"integralbasis.lib"; 2900 ring r = 0, (x,y), dp; 2901 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2902 int t = timer; 2903 list l1 = integralBasis(f,2, "atOrigin"); 2904 LIB"integralbasis.lib"; 2905 ring r = 0, (x,y), dp; 2906 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2907 int t = timer; 2908 list l1 = integralBasis(f,2, "atOrigin"); 2909 l1; 2910 LIB"integralbasis.lib"; 2911 ring r = 0, (x,y), dp; 2912 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2913 int t = timer; 2914 list l1 = integralBasis(f, 2, "atOrigin"); 2915 timer - t; 2916 t = timer; 2917 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2918 timer - t; 2919 reduce(l1[1], groebner(l2[1])); 2920 reduce(l2[1], groebner(l1[1])); 2921 LIB"integralbasis.lib"; 2922 ring r = 0, (x,y), dp; 2923 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2924 int t = timer; 2925 list l1 = integralBasis(f, 2, "atOrigin"); 2926 LIB"integralbasis.lib"; 2927 ring r = 0, (x,y), dp; 2928 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2929 int t = timer; 2930 list l1 = integralBasis(f, 2, "atOrigin"); 2931 LIB"integralbasis.lib"; 2932 ring r = 0, (x,y), dp; 2933 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2934 int t = timer; 2935 list l1 = integralBasis(f, 2, "atOrigin"); 2936 LIB"integralbasis.lib"; 2937 ring r = 0, (x,y), dp; 2938 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 2939 int t = timer; 2940 list l1 = integralBasis(f, 2, "atOrigin"); 2941 printlevel = 5; 2942 LIB"integralbasis.lib"; 2943 ring r = 0,(x,y),(dp, L(100000)); 2944 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 2945 int t = timer; 2946 list l1 = integralBasis(f, 2, "atOrigin"); 2947 timer - t; 2948 t = timer; 2949 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2950 timer - t; 2951 reduce(l1[1], groebner(l2[1])); 2952 reduce(l2[1], groebner(l1[1])); 2953 LIB"integralbasis.lib"; 2954 ring r = 0,(x,y),(dp, L(100000)); 2955 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52) + y^100; 2956 int t = timer; 2957 list l1 = integralBasis(f, 2, "atOrigin"); 2958 timer - t; 2959 t = timer; 2960 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2961 timer - t; 2962 reduce(l1[1], groebner(l2[1])); 2963 reduce(l2[1], groebner(l1[1])); 2964 [200~LIB"integralbasis.lib"; 2965 ring r = 0,(x,y),(dp, L(100000)); 2966 poly f = (y^15 + 2*x^7)*(y^15 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^60; 2967 int t = timer; 2968 list l1 = integralBasis(f, 2, "atOrigin"); 2969 LIB"integralbasis.lib"; 2970 ring r = 0,(x,y),(dp, L(100000)); 2971 poly f = (y^15 + 2*x^7)*(y^15 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^60; 2972 int t = timer; 2973 list l1 = integralBasis(f, 2, "atOrigin"); 2974 LIB"integralbasis.lib"; 2975 ring r = 0,(x,y),(dp, L(100000)); 2976 poly f = (y^15 + 2*x^7)*(y^15 + 2*x^8)*(y^9 + 7*x^2)*(y^7+3*x^2)*(y^11+7*x6*y6+x^12) + y^60; 2977 int t = timer; 2978 list l1 = integralBasis(f, 2, "atOrigin"); 2979 timer - t; 2980 t = timer; 2981 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2982 timer - t; 2983 LIB"integralbasis.lib"; 2984 ring r = 0, (x,y), dp; 2985 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y30; 2986 int t = timer; 2987 list l1 = integralBasis(f, 2, "atOrigin"); 2988 timer - t; 2989 t = timer; 2990 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 2991 timer - t; 2992 LIB"integralbasis.lib"; 2993 ring r = 0, (x,y), dp; 2994 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y30; 2995 int t = timer; 2996 list l1 = integralBasis(f, 2, "atOrigin"); 2997 timer - t; 2998 t = timer; 2999 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3000 timer - t; 3001 LIB"integralbasis.lib"; 3002 ring r = 0, (x,y), dp; 3003 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 3004 int t = timer; 3005 list l1 = integralBasis(f, 2, "atOrigin"); 3006 timer - t; 3007 t = timer; 3008 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3009 timer - t; 3010 reduce(l1[1], groebner(l2[1])); 3011 reduce(l2[1], groebner(l1[1])); 3012 LIB"integralbasis.lib"; 3013 ring r = 0,(x,y),dp; 3014 int k = 40; int d = 50; 3015 poly f = y^2 + x^(k+1) + y^d; 3016 int t = timer; 3017 list l1 = integralBasis(f, 2, "atOrigin"); 3018 timer - t; 3019 t = timer; 3020 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3021 timer - t; 3022 reduce(l1[1], groebner(l2[1])); 3023 reduce(l2[1], groebner(l1[1])); 3024 LIB"integralbasis.lib"; 3025 ring r = 0,(x,y),dp; 3026 int k = 400; int d = 500; 3027 poly f = y^2 + x^(k+1) + y^d; 3028 int t = timer; 3029 list l1 = integralBasis(f, 2, "atOrigin"); 3030 timer - t; 3031 t = timer; 3032 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3033 timer - t; 3034 reduce(l1[1], groebner(l2[1])); 3035 reduce(l2[1], groebner(l1[1])); 3036 LIB"integralbasis.lib"; 3037 ring r = 0,(x,y),dp; 3038 int k = 40; int d = 50; 3039 poly f = x*(x^(k-1) + y^2) + y^d; 3040 list l1 = integralBasis(f, 2, "atOrigin"); 3041 timer - t; 3042 t = timer; 3043 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3044 timer - t; 3045 reduce(l1[1], groebner(l2[1])); 3046 reduce(l2[1], groebner(l1[1])); 3047 int t = timer; 3048 list l1 = integralBasis(f, 2, "atOrigin"); 3049 timer - t; 3050 t = timer; 3051 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3052 timer - t; 3053 reduce(l1[1], groebner(l2[1])); 3054 reduce(l2[1], groebner(l1[1])); 3055 LIB"integralbasis.lib"; 3056 ring r = 0,(x,y),dp; 3057 int k = 400; int d = 500; 3058 poly f = x*(x^(k-1) + y^2) + y^d; 3059 int t = timer; 3060 list l1 = integralBasis(f, 2, "atOrigin"); 3061 timer - t; 3062 t = timer; 3063 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3064 timer - t; 3065 LIB"integralbasis.lib"; 3066 ring r = 0,(x,y),dp; 3067 int k = 400; int d = 500; 3068 poly f = x*(x^(k-1) + y^2) + y^d; 3069 int t = timer; 3070 list l1 = integralBasis(f, 2, "atOrigin"); 3071 timer - t; 3072 t = timer; 3073 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3074 timer - t; 3075 LIB"integralbasis.lib"; 3076 ring r = 0,(x,y),dp; 3077 int k = 400; int d = 500; 3078 poly f = x*(x^(k-1) + y^2) + y^d; 3079 int t = timer; 3080 list l1 = integralBasis(f, 2, "atOrigin"); 3081 timer - t; 3082 t = timer; 3083 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3084 timer - t; 3085 3086 LIB"integralbasis.lib"; 3087 ring r = 0,(x,y),dp; 3088 int k = 400; int d = 500; 3089 poly f = x*(x^(k-1) + y^2) + y^d; 3090 int t = timer; 3091 list l1 = integralBasis(f, 2, "atOrigin"); 3092 timer - t; 3093 t = timer; 3094 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3095 timer - t; 3096 LIB"integralbasis.lib"; 3097 ring r = 0,(x,y),dp; 3098 int k = 400; int d = 500; 3099 poly f = x*(x^(k-1) + y^2) + y^d; 3100 int t = timer; 3101 list l1 = integralBasis(f, 2, "atOrigin"); 3102 timer - t; 3103 t = timer; 3104 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3105 timer - t; 3106 LIB"integralbasis.lib"; 3107 ring r = 0,(x,y),dp; 3108 int k = 400; int d = 500; 3109 poly f = x*(x^(k-1) + y^2) + y^d; 3110 int t = timer; 3111 list l1 = integralBasis(f, 2, "atOrigin"); 3112 timer - t; 3113 t = timer; 3114 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3115 timer - t; 3116 min(10,20); 3117 LIB"integralbasis.lib"; 3118 ring r = 0,(x,y),dp; 3119 int k = 400; int d = 500; 3120 poly f = x*(x^(k-1) + y^2) + y^d; 3121 int t = timer; 3122 list l1 = integralBasis(f, 2, "atOrigin"); 3123 timer - t; 3124 t = timer; 3125 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3126 timer - t; 3127 LIB"integralbasis.lib"; 3128 ring r = 0,(x,y),dp; 3129 int k = 400; int d = 500; 3130 poly f = x*(x^(k-1) + y^2) + y^d; 3131 int t = timer; 3132 list l1 = integralBasis(f, 2, "atOrigin"); 3133 timer - t; 3134 t = timer; 3135 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3136 timer - t; 3137 LIB"integralbasis.lib"; 3138 ring r = 0,(x,y),dp; 3139 int k = 400; int d = 500; 3140 poly f = x*(x^(k-1) + y^2) + y^d; 3141 int t = timer; 3142 list l1 = integralBasis(f, 2, "atOrigin"); 3143 timer - t; 3144 t = timer; 3145 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3146 timer - t; 3147 reduce(l1[1], groebner(l2[1])); 3148 reduce(l2[1], groebner(l1[1])); 3149 LIB"integralbasis.lib"; 3150 ring r = 0,(x,y),dp; 3151 int k = 400; int d = 500; 3152 poly f = y^2 + x^(k+1) + y^d; 3153 int t = timer; 3154 list l1 = integralBasis(f, 2, "atOrigin"); 3155 timer - t; 3156 t = timer; 3157 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3158 timer - t; 3159 reduce(l1[1], groebner(l2[1])); 3160 reduce(l2[1], groebner(l1[1])); 3161 LIB"integralbasis.lib"; 3162 ring r = 0,(x,y),dp; 3163 int k = 400; int d = 500; 3164 poly f = x*(x^(k-1) + y^2) + y^d; 3165 int t = timer; 3166 list l1 = integralBasis(f, 2, "atOrigin"); 3167 timer - t; 3168 t = timer; 3169 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3170 timer - t; 3171 LIB"integralbasis.lib"; 3172 ring r = 0, (x,y), dp; 3173 int k = 5; 3174 int d = 10; 3175 poly f = polyDK(d, k, 1231); 3176 int t = timer; 3177 list l1 = integralBasis(f, 2, "atOrigin"); 3178 timer - t; 3179 t = timer; 3180 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3181 timer - t; 3182 reduce(l1[1], groebner(l2[1])); 3183 reduce(l2[1], groebner(l1[1])); 3184 l1; 3185 l2; 3186 f; 3187 LIB"integralbasis.lib"; 3188 ring r = 0, (x,y), dp; 3189 int k = 5; 3190 int d = 10; 3191 poly f = polyDK(d, k, 1231); 3192 int t = timer; 3193 list l1 = integralBasis(f, 2, "atOrigin"); 3194 l1; 3195 f; 3196 deg(f); 3197 subst(f,x,0); 3198 puiseux(f,-1,1); 3199 def S = puiseux(f,-1,1); 3200 setring S; 3201 def S = puiseux(f,-1,1)[1]; 3202 setring S; 3203 PE; 3204 basering; 3205 LIB"integralbasis.lib"; 3206 ring r = 0, (x,y), dp; 3207 int k = 5; 3208 int d = 10; 3209 poly f = polyDK(d, k, 1231); 3210 int t = timer; 3211 list l1 = integralBasis(f, 2, "atOrigin"); 3212 l1; 3213 LIB"integralbasis.lib"; 3214 ring r = 0, (x,y), dp; 3215 int k = 5; 3216 int d = 10; 3217 poly f = polyDK(d, k, 1231); 3218 int t = timer; 3219 list l1 = integralBasis(f, 2, "atOrigin"); 3220 LIB"integralbasis.lib"; 3221 ring r = 0, (x,y), dp; 3222 int k = 5; 3223 int d = 10; 3224 poly f = polyDK(d, k, 1231); 3225 int t = timer; 3226 list l1 = integralBasis(f, 2, "atOrigin"); 3227 l1; 3228 ring r = 0,(x,y),dp; 3229 int k = 400; int d = 500; 3230 poly f = x*(x^(k-1) + y^2) + y^d; 3231 int t = timer; 3232 list l1 = integralBasis(f, 2, "atOrigin"); 3233 timer - t; 3234 t = timer; 3235 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3236 LIB"integralbasis.lib"; 3237 ring r = 0,(x,y),dp; 3238 int k = 400; int d = 500; 3239 poly f = x*(x^(k-1) + y^2) + y^d; 3240 int t = timer; 3241 list l1 = integralBasis(f, 2, "atOrigin"); 3242 l1; 3243 timer - t; 3244 t = timer; 3245 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3246 timer - t; 3247 l2; 3248 LIB"integralbasis.lib"; 3249 ring r = 0,(x,y),dp; 3250 int k = 400; int d = 500; 3251 poly f = x*(x^(k-1) + y^2) + y^d; 3252 int t = timer; 3253 list l1 = integralBasis(f, 2, "atOrigin"); 3254 l1; 3255 LIB"integralbasis.lib"; 3256 ring r = 0,(x,y),dp; 3257 int k = 400; int d = 500; 3258 poly f = x*(x^(k-1) + y^2) + y^d; 3259 int t = timer; 3260 list l1 = integralBasis(f, 2, "atOrigin"); 3261 timer - t; 3262 t = timer; 3263 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3264 timer - t; 3265 LIB"integralbasis.lib"; 3266 ring r = 0,(x,y),dp; 3267 int k = 400; int d = 500; 3268 poly f = x*(x^(k-1) + y^2) + y^d; 3269 int t = timer; 3270 list l1 = integralBasis(f, 2, "atOrigin"); 3271 timer - t; 3272 t = timer; 3273 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3274 timer - t; 3275 LIB"integralbasis.lib"; 3276 ring r = 0, (x,y), dp; 3277 int k = 5; 3278 int d = 10; 3279 poly f = polyDK(d, k, 1231); 3280 int t = timer; 3281 list l1 = integralBasis(f, 2, "atOrigin"); 3282 timer - t; 3283 t = timer; 3284 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3285 timer - t; 3286 reduce(l1[1], groebner(l2[1])); 3287 reduce(l2[1], groebner(l1[1])); 3288 LIB"integralbasis.lib"; 3289 ring r = 0, (x,y), dp; 3290 int k = 5; 3291 int d = 10; 3292 poly f = polyDK(d, k, 1231); 3293 int t = timer; 3294 list l1 = integralBasis(f, 2, "atOrigin"); 3295 intExp; 3296 ib 3297 LIB"integralbasis.lib"; 3298 ring r = 0, (x,y), dp; 3299 int k = 5; 3300 int d = 10; 3301 poly f = polyDK(d, k, 1231); 3302 int t = timer; 3303 list l1 = integralBasis(f, 2, "atOrigin"); 3304 timer - t; 3305 t = timer; 3306 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3307 timer - t; 3308 reduce(l1[1], groebner(l2[1])); 3309 reduce(l2[1], groebner(l1[1])); 3310 LIB"integralbasis.lib"; 3311 ring r = 0,(x,y),dp; 3312 int k = 400; int d = 500; 3313 poly f = x*(x^(k-1) + y^2) + y^d; 3314 int t = timer; 3315 list l1 = integralBasis(f, 2, "atOrigin"); 3316 timer - t; 3317 t = timer; 3318 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3319 timer - t; 3320 reduce(l1[1], groebner(l2[1])); 3321 reduce(l2[1], groebner(l1[1])); 3322 LIB"integralbasis.lib"; 3323 ring r = 0,(x,y),dp; 3324 int k = 400; int d = 500; 3325 poly f = y^2 + x^(k+1) + y^d; 3326 int t = timer; 3327 list l1 = integralBasis(f, 2, "atOrigin"); 3328 timer - t; 3329 t = timer; 3330 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3331 timer - t; 3332 reduce(l1[1], groebner(l2[1])); 3333 reduce(l2[1], groebner(l1[1])); 3334 printlevel = 5; 3335 LIB"integralbasis.lib"; 3336 ring r = 0, (x,y), dp; 3337 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 3338 int t = timer; 3339 list l1 = integralBasis(f, 2, "atOrigin"); 3340 timer - t; 3341 t = timer; 3342 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3343 timer - t; 3344 reduce(l1[1], groebner(l2[1])); 3345 reduce(l2[1], groebner(l1[1])); 3346 printlevel = 5; 3347 LIB"integralbasis.lib"; 3348 ring r = 0, (x,y), dp; 3349 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y30; 3350 int t = timer; 3351 list l1 = integralBasis(f, 2, "atOrigin"); 3352 timer - t; 3353 t = timer; 3354 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3355 timer - t; 3356 reduce(l1[1], groebner(l2[1])); 3357 reduce(l2[1], groebner(l1[1])); 3358 LIB"integralbasis.lib"; 3359 ring r = 0,(x,y),dp; 3360 int k = 6; 3361 poly z = 2*x - y + 1; 3362 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3363 f = monic(f); 3364 int t = timer; 3365 list l1 = integralBasis(f, 2, "atOrigin"); 3366 timer - t; 3367 t = timer; 3368 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3369 timer - t; 3370 reduce(l1[1], groebner(l2[1])); 3371 reduce(l2[1], groebner(l1[1])); 3372 reduce(l1[1], groebner(l2[1])); 3373 reduce(l2[1], groebner(l1[1])); 3374 printlevel = 4; 3375 LIB"integralbasis.lib"; 3376 ring r = 0,(x,y),dp; 3377 int k = 11; 3378 poly z = x - 2*y + 1; 3379 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3380 f = monic(f); 3381 list l = integralBasis(f, 2, "nonModular"); 3382 LIB"integralbasis.lib"; 3383 ring r = 0,(x,y),dp; 3384 poly f = x^15-21*x^14+8*x^13*y-6*x^13-16*x^12*y+20*x^11*y^2-x^12+8*x^11*y-36*x^10*y^2+24*x^9*y^3+4*x^9*y^2-16*x^8*y^3+26*x^7*y^4-6*x^6*y^4+8*x^5*y^5+4*x^3*y^6-y^8; 3385 f = f *(-1); 3386 list l = integralBasis(f, 2, "nonModular"); 3387 LIB"integralbasis.lib"; 3388 ring r = 0,(x,y),dp; 3389 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3390 list l = integralBasis(f, 2, "nonModular"); 3391 LIB"integralbasis.lib"; 3392 ring r = 0,(x,y),dp; 3393 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3394 list l = integralBasis(f, 2, "nonModular"); 3395 int t = timer; 3396 list l1 = integralBasis(f, 2, "atOrigin"); 3397 timer - t; 3398 t = timer; 3399 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3400 timer - t; 3401 reduce(l1[1], groebner(l2[1])); 3402 reduce(l2[1], groebner(l1[1])); 3403 LIB"integralbasis.lib"; 3404 ring r = 0,(x,y),dp; 3405 poly f = (y^5 + y^4*x^7 + 2*x^8) * (y^3 + 7*x^4) * (y^7 + 2*x^12) * (y^11 + 2*x^18) + y^30; 3406 int t = timer; 3407 list l1 = integralBasis(f, 2, "atOrigin"); 3408 timer - t; 3409 t = timer; 3410 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3411 timer - t; 3412 LIB"integralbasis.lib"; 3413 ring r = 0,(x,y),(dp, L(100000)); 3414 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52) + y^36; 3415 int t = timer; 3416 list l1 = integralBasis(f, 2); 3417 timer - t; 3418 t = timer; 3419 list l2 = integralBasis(f, 2, "noOpti"); 3420 timer - t; 3421 LIB"integralbasis.lib"; 3422 ring r = 0,(x,y),dp; 3423 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 3424 list l = integralBasis(f, 2, "atOrigin"); 3425 int t = timer; 3426 list l1 = integralBasis(f, 2); 3427 timer - t; 3428 t = timer; 3429 list l2 = integralBasis(f, 2, "noOpti"); 3430 timer - t; 3431 LIB"integralbasis.lib"; 3432 ring r = 0,(x,y),dp; 3433 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 3434 list l = integralBasis(f, 2, "atOrigin"); 3435 int t = timer; 3436 list l1 = integralBasis(f, 2); 3437 timer - t; 3438 t = timer; 3439 list l2 = integralBasis(f, 2, "noOpti"); 3440 timer - t; 3441 LIB"integralbasis.lib"; 3442 ring r = 0,(x,y),dp; 3443 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 3444 list l = integralBasis(f, 2, "atOrigin"); 3445 LIB"integralbasis.lib"; 3446 ring r = 0,(x,y),dp; 3447 int k = 11; 3448 poly z = x - 2*y + 1; 3449 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3450 f = monic(f); 3451 list l = integralBasis(f, 2, "nonModular"); 3452 LIB"integralbasis.lib"; 3453 ring r = 0,(x,y),dp; 3454 int k = 11; 3455 poly z = x - 2*y + 1; 3456 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3457 f = monic(f); 3458 list l = integralBasis(f, 2, "nonModular"); 3459 LIB"integralbasis.lib"; 3460 ring r = 0,(x,y),dp; 3461 int k = 11; 3462 poly z = x - 2*y + 1; 3463 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3464 f = monic(f); 3465 list l = integralBasis(f, 2, "nonModular"); 3466 list l = integralBasis(f, 2, "nonModular"); 3467 LIB"integralbasis.lib"; 3468 ring r = 0,(x,y),dp; 3469 int k = 7; 3470 poly z = x - 2*y + 1; 3471 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3472 f = monic(f); 3473 list l = integralBasis(f, 2, "nonModular"); 3474 int t = timer; 3475 list l1 = integralBasis(f, 2, "atOrigin"); 3476 timer - t; 3477 t = timer; 3478 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3479 timer - t; 3480 reduce(l1[1], groebner(l2[1])); 3481 reduce(l2[1], groebner(l1[1])); 3482 printlevel = 4; 3483 LIB"integralbasis.lib"; 3484 ring r = 0,(x,y),dp; 3485 int k = 7; 3486 poly z = x - 2*y + 1; 3487 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3488 f = monic(f); 3489 int t = timer; 3490 list l1 = integralBasis(f, 2, "atOrigin"); 3491 timer - t; 3492 t = timer; 3493 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3494 timer - t; 3495 reduce(l1[1], groebner(l2[1])); 3496 reduce(l2[1], groebner(l1[1])); 3497 LIB"integralbasis.lib"; 3498 ring r = 0,(x,y),dp; 3499 int k = 7; 3500 poly z = x - 2*y + 1; 3501 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3502 f = monic(f); 3503 int t = timer; 3504 list l1 = integralBasis(f, 2); 3505 timer - t; 3506 t = timer; 3507 list l2 = integralBasis(f, 2, "noOpti"); 3508 timer - t; 3509 reduce(l1[1], groebner(l2[1])); 3510 reduce(l2[1], groebner(l1[1])); 3511 LIB"integralbasis.lib"; 3512 ring r = 0,(x,y),dp; 3513 int k = 7; 3514 poly z = x - 2*y + 1; 3515 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3516 f = monic(f); 3517 int t = timer; 3518 list l1 = integralBasis(f, 2); 3519 timer - t; 3520 t = timer; 3521 list l2 = integralBasis(f, 2, "noOpti"); 3522 timer - t; 3523 l1; 3524 l2; 3525 l1; 3526 l2; 3527 reduce(l1[1], groebner(l2[1])); 3528 LIB"integralbasis.lib"; 3529 ring r = 0,(x,y),dp; 3530 int k = 7; 3531 poly z = x - 2*y + 1; 3532 poly f = x^(2*k) + y^(2*k) + z^(2*k) + 2 * (x^k * z^k - x^k * y^k + y^k * z^k); 3533 f = monic(f); 3534 int t = timer; 3535 list l1 = integralBasis(f, 2); 3536 timer - t; 3537 t = timer; 3538 list l2 = integralBasis(f, 2, "noOpti"); 3539 timer - t; 3540 reduce(l2[1], groebner(l1[1])); 3541 LIB"integralbasis.lib"; 3542 ring r = 0,(x,y),dp; 3543 int k = 4; 3544 poly z = 2*x - y + 1; 3545 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3546 f = monic(f); 3547 int t = timer; 3548 list l1 = integralBasis(f, 2, "atOrigin"); 3549 timer - t; 3550 t = timer; 3551 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3552 timer - t; 3553 reduce(l1[1], groebner(l2[1])); 3554 reduce(l2[1], groebner(l1[1])); 3555 LIB"integralbasis.lib"; 3556 ring r = 0,(x,y),dp; 3557 int k = 4; 3558 poly z = 2*x - y + 1; 3559 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3560 f = monic(f); 3561 int t = timer; 3562 list l1 = integralBasis(f, 2, "atOrigin"); 3563 LIB"integralbasis.lib"; 3564 ring r = 0,(x,y),dp; 3565 int k = 4; 3566 poly z = 2*x - y + 1; 3567 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3568 f = monic(f); 3569 int t = timer; 3570 list l1 = integralBasis(f, 2); 3571 LIB"integralbasis.lib"; 3572 ring r = 0,(x,y),dp; 3573 int k = 4; 3574 poly z = 2*x - y + 1; 3575 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3576 f = monic(f); 3577 int t = timer; 3578 list l1 = integralBasis(f, 2); 3579 timer - t; 3580 t = timer; 3581 list l2 = integralBasis(f, 2, "noOpti"); 3582 timer - t; 3583 reduce(l1[1], groebner(l2[1])); 3584 reduce(l2[1], groebner(l1[1])); 3585 l1; 3586 l2; 3587 l1; 3588 l2; 3589 LIB"integralbasis.lib"; 3590 ring r = 0,(x,y),dp; 3591 int k = 4; 3592 poly z = 2*x - y + 1; 3593 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3594 f = monic(f); 3595 int t = timer; 3596 list l1 = integralBasis(f, 2); 3597 basering 3598 basering 3599 LIB"integralbasis.lib"; 3600 ring r = 0,(x,y),dp; 3601 int k = 4; 3602 poly z = 2*x - y + 1; 3603 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3604 f = monic(f); 3605 int t = timer; 3606 list l1 = integralBasis(f, 2); 3607 minpoly 3608 pardeg(minpoly) 3609 pardeg(minpoly) 3610 basering 3611 LIB"integralbasis.lib"; 3612 ring r = 0,(x,y),dp; 3613 int k = 4; 3614 poly z = 2*x - y + 1; 3615 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3616 f = monic(f); 3617 int t = timer; 3618 list l1 = integralBasis(f, 2); 3619 timer - t; 3620 t = timer; 3621 list l2 = integralBasis(f, 2, "noOpti"); 3622 timer - t; 3623 reduce(l1[1], groebner(l2[1])); 3624 reduce(l2[1], groebner(l1[1])); 3625 LIB"integralbasis.lib"; 3626 ring r = 0,(x,y),dp; 3627 int k = 4; 3628 poly z = 2*x - y + 1; 3629 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3630 f = monic(f); 3631 int t = timer; 3632 list l1 = integralBasis(f, 2); 3633 timer - t; 3634 t = timer; 3635 list l2 = integralBasis(f, 2, "noOpti"); 3636 timer - t; 3637 reduce(l1[1], groebner(l2[1])); 3638 reduce(l2[1], groebner(l1[1])); 3639 LIB"integralbasis.lib"; 3640 ring r = 0,(x,y),dp; 3641 int k = 4; 3642 poly z = 2*x - y + 1; 3643 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3644 f = monic(f); 3645 int t = timer; 3646 list l1 = integralBasis(f, 2); 3647 timer - t; 3648 t = timer; 3649 list l2 = integralBasis(f, 2, "noOpti"); 3650 timer - t; 3651 reduce(l1[1], groebner(l2[1])); 3652 reduce(l2[1], groebner(l1[1])); 3653 LIB"integralbasis.lib"; 3654 ring r = 0,(x,y),dp; 3655 int k = 6; 3656 poly z = 2*x - y + 1; 3657 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3658 f = monic(f); 3659 int t = timer; 3660 list l1 = integralBasis(f, 2); 3661 timer - t; 3662 t = timer; 3663 list l2 = integralBasis(f, 2, "noOpti"); 3664 timer - t; 3665 reduce(l1[1], groebner(l2[1])); 3666 reduce(l2[1], groebner(l1[1])); 3667 LIB"integralbasis.lib"; 3668 ring r = 0,(x,y),dp; 3669 int k = 6; 3670 poly z = 2*x - y + 1; 3671 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3672 f = monic(f); 3673 int t = timer; 3674 list l1 = integralBasis(f, 2); 3675 timer - t; 3676 t = timer; 3677 list l2 = integralBasis(f, 2, "noOpti"); 3678 timer - t; 3679 reduce(l1[1], groebner(l2[1])); 3680 reduce(l2[1], groebner(l1[1])); 3681 reduce(l1[1], groebner(l2[1])); 3682 reduce(l2[1], groebner(l1[1])); 3683 LIB"integralbasis.lib"; 3684 ring r = 0,(x,y),dp; 3685 int k = 6; 3686 poly z = 2*x - y + 1; 3687 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3688 f = monic(f); 3689 int t = timer; 3690 list l1 = integralBasis(f, 2); 3691 timer - t; 3692 t = timer; 3693 list l2 = integralBasis(f, 2, "noOpti"); 3694 timer - t; 3695 basering 3696 PE 3697 minPolys 3698 composePolys(minPolys) 3699 poly mpX = subst(mp, var(2), var(1)); 3700 LIB"integralbasis.lib"; 3701 ring r = 0,(x,y),dp; 3702 int k = 6; 3703 poly z = 2*x - y + 1; 3704 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3705 f = monic(f); 3706 int t = timer; 3707 list l1 = integralBasis(f, 2); 3708 timer - t; 3709 t = timer; 3710 list l2 = integralBasis(f, 2, "noOpti"); 3711 timer - t; 3712 mp 3713 LIB"integralbasis.lib"; 3714 ring r = 0,(x,y),dp; 3715 int k = 6; 3716 poly z = 2*x - y + 1; 3717 poly f = (x^(k+1) + y^(k+1) + z^(k+1))^2 - 4*(x^(k+1)*y^(k+1) + y^(k+1)*z^(k+1) + z^(k+1)*x^(k+1)); 3718 f = monic(f); 3719 int t = timer; 3720 list l1 = integralBasis(f, 2); 3721 timer - t; 3722 t = timer; 3723 list l2 = integralBasis(f, 2, "noOpti"); 3724 timer - t; 3725 poly mp = composePolys(minPolys); 3726 poly mpX = subst(mp, var(2), var(1)); 3727 fF 3728 poly fFB = buildPolyFracNew(fF, mpX); 3729 fFB 3730 PE 3731 d 3732 LIB"integralbasis.lib"; 3733 ring r = 0,(x,y),(dp, L(100000)); 3734 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52) + y^100; 3735 int t = timer; 3736 list l1 = integralBasis(f, 2, "atOrigin"); 3737 timer - t; 3738 t = timer; 3739 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3740 timer - t; 3741 reduce(l1[1], groebner(l2[1])); 3742 reduce(l2[1], groebner(l1[1])); 3743 size(reduce(l1[1], groebner(l2[1]))); 3744 size(reduce(l2[1], groebner(l1[1]))); 3745 LIB"integralbasis.lib"; 3746 ring r = 0,(x,y),(dp, L(100000)); 3747 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52)*(y^7+3*x^2) + y^100; 3748 int t = timer; 3749 list l1 = integralBasis(f, 2, "atOrigin"); 3750 timer - t; 3751 t = timer; 3752 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3753 timer - t; 3754 size(reduce(l1[1], groebner(l2[1]))); 3755 size(reduce(l2[1], groebner(l1[1]))); 3756 LIB"integralbasis.lib"; 3757 ring r = 0, (x,y), dp; 3758 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y30; 3759 int t = timer; 3760 list l1 = integralBasis(f, 2, "atOrigin"); 3761 timer - t; 3762 t = timer; 3763 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3764 timer - t; 3765 size(reduce(l1[1], groebner(l2[1]))); 3766 size(reduce(l2[1], groebner(l1[1]))); 3767 LIB"integralbasis.lib"; 3768 ring r = 0, (x,y), dp; 3769 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y30; 3770 int t = timer; 3771 list l1 = integralBasis(f, 2, "atOrigin"); 3772 timer - t; 3773 t = timer; 3774 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3775 timer - t; 3776 LIB"integralbasis.lib"; 3777 ring r = 0, (x,y), dp; 3778 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y30; 3779 int t = timer; 3780 list l1 = integralBasis(f, 2, "atOrigin"); 3781 timer - t; 3782 t = timer; 3783 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3784 timer - t; 3785 size(reduce(l1[1], groebner(l2[1]))); 3786 size(reduce(l2[1], groebner(l1[1]))); 3787 LIB"integralbasis.lib"; 3788 ring r = 0, (x,y), dp; 3789 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 3790 int t = timer; 3791 list l1 = integralBasis(f, 2, "atOrigin"); 3792 timer - t; 3793 t = timer; 3794 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3795 timer - t; 3796 size(reduce(l1[1], groebner(l2[1]))); 3797 size(reduce(l2[1], groebner(l1[1]))); 3798 LIB"integralbasis.lib"; 3799 ring r = 0, (x,y), dp; 3800 poly f = (y7 + x4) * (y7 + y5x3 + x4) + y16; 3801 int t = timer; 3802 list l1 = integralBasis(f, 2, "atOrigin"); 3803 timer - t; 3804 t = timer; 3805 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3806 timer - t; 3807 size(reduce(l1[1], groebner(l2[1]))); 3808 size(reduce(l2[1], groebner(l1[1]))); 3809 LIB"integralbasis.lib"; 3810 ring r = 0,(x,y),dp; 3811 int k = 400; int d = 500; 3812 poly f = y^2 + x^(k+1) + y^d; 3813 int t = timer; 3814 list l1 = integralBasis(f, 2, "atOrigin"); 3815 timer - t; 3816 t = timer; 3817 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3818 timer - t; 3819 size(reduce(l1[1], groebner(l2[1]))); 3820 size(reduce(l2[1], groebner(l1[1]))); 3821 LIB"integralbasis.lib"; 3822 ring r = 0,(x,y),dp; 3823 int k = 400; int d = 500; 3824 poly f = x*(x^(k-1) + y^2) + y^d; 3825 int t = timer; 3826 list l1 = integralBasis(f, 2, "atOrigin"); 3827 timer - t; 3828 t = timer; 3829 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3830 timer - t; 3831 size(reduce(l1[1], groebner(l2[1]))); 3832 size(reduce(l2[1], groebner(l1[1]))); 3833 LIB"integralbasis.lib"; 3834 ring r = 0,(x,y),dp; 3835 int k = 400; int d = 500; 3836 poly f = x*(x^(k-1) + y^2) + y^d; 3837 int t = timer; 3838 list l1 = integralBasis(f, 2, "atOrigin"); 3839 timer - t; 3840 t = timer; 3841 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3842 timer - t; 3843 size(reduce(l1[1], groebner(l2[1]))); 3844 size(reduce(l2[1], groebner(l1[1]))); 3845 LIB"integralbasis.lib"; 3846 ring r = 0, (x,y), dp; 3847 int k = 5; 3848 int d = 10; 3849 poly f = polyDK(d, k, 1231); 3850 int t = timer; 3851 list l1 = integralBasis(f, 2, "atOrigin"); 3852 timer - t; 3853 t = timer; 3854 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3855 timer - t; 3856 size(reduce(l1[1], groebner(l2[1]))); 3857 size(reduce(l2[1], groebner(l1[1]))); 3858 LIB"integralbasis.lib"; 3859 ring r = 0, (x,y), dp; 3860 int k = 20; 3861 int d = 30; 3862 poly f = polyDK(d, k, 1231); 3863 int t = timer; 3864 list l1 = integralBasis(f, 2, "atOrigin"); 3865 timer - t; 3866 t = timer; 3867 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3868 timer - t; 3869 size(reduce(l1[1], groebner(l2[1]))); 3870 size(reduce(l2[1], groebner(l1[1]))); 3871 LIB"integralbasis.lib"; 3872 ring r = 0, (x,y), dp; 3873 int k = 50; 3874 int d = 60; 3875 poly f = polyDK(d, k, 1231); 3876 int t = timer; 3877 list l1 = integralBasis(f, 2, "atOrigin"); 3878 timer - t; 3879 t = timer; 3880 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3881 timer - t; 3882 size(reduce(l1[1], groebner(l2[1]))); 3883 size(reduce(l2[1], groebner(l1[1]))); 3884 ring r = 0, (x,y), dp; 3885 int k = 50; 3886 int d = 70; 3887 poly f = polyDK(d, k, 1231); 3888 int t = timer; 3889 list l1 = integralBasis(f, 2, "atOrigin"); 3890 timer - t; 3891 t = timer; 3892 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3893 timer - t; 3894 size(reduce(l1[1], groebner(l2[1]))); 3895 size(reduce(l2[1], groebner(l1[1]))); 3896 ring r = 0, (x,y), dp; 3897 int k = 50; 3898 int d = 70; 3899 poly f = polyDK(d, k, 1231); 3900 int t = timer; 3901 list l1 = integralBasis(f, 2, "atOrigin"); 3902 timer - t; 3903 t = timer; 3904 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3905 timer - t; 3906 size(reduce(l1[1], groebner(l2[1]))); 3907 size(reduce(l2[1], groebner(l1[1]))); 3908 LIB"integralbasis.lib"; 3909 ring r = 0, (x,y), dp; 3910 int k = 50; 3911 int d = 70; 3912 poly f = polyDK(d, k, 1231); 3913 int t = timer; 3914 list l1 = integralBasis(f, 2, "atOrigin"); 3915 timer - t; 3916 t = timer; 3917 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3918 timer - t; 3919 size(reduce(l1[1], groebner(l2[1]))); 3920 size(reduce(l2[1], groebner(l1[1]))); 3921 LIB"integralbasis.lib"; 3922 ring r = 0, (x,y), dp; 3923 int k = 50; 3924 int d = 70; 3925 poly f = polyDK(d, k, 1231); 3926 int t = timer; 3927 list l1 = integralBasis(f, 2, "atOrigin"); 3928 timer - t; 3929 t = timer; 3930 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3931 timer - t; 3932 size(reduce(l1[1], groebner(l2[1]))); 3933 size(reduce(l2[1], groebner(l1[1]))); 3934 LIB"integralbasis.lib"; 3935 ring r = 0,(x,y),dp; 3936 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3937 int t = timer; 3938 list l1 = integralBasis(f, 2, "atOrigin"); 3939 timer - t; 3940 t = timer; 3941 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3942 timer - t; 3943 reduce(l1[1], groebner(l2[1])); 3944 reduce(l2[1], groebner(l1[1])); 3945 LIB"integralbasis.lib"; 3946 ring r = 0,(x,y),dp; 3947 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3948 int t = timer; 3949 list l1 = integralBasis(f, 2, "atOrigin"); 3950 timer - t; 3951 t = timer; 3952 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3953 timer - t; 3954 reduce(l1[1], groebner(l2[1])); 3955 reduce(l2[1], groebner(l1[1])); 3956 LIB"integralbasis.lib"; 3957 ring r = 0,(x,y),dp; 3958 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3959 int t = timer; 3960 list l1 = integralBasis(f, 2, "atOrigin"); 3961 timer - t; 3962 t = timer; 3963 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3964 timer - t; 3965 size(reduce(l1[1], groebner(l2[1]))); 3966 size(reduce(l2[1], groebner(l1[1]))); 3967 LIB"integralbasis.lib"; 3968 ring r = 0,(x,y),dp; 3969 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3970 int t = timer; 3971 list l1 = integralBasis(f, 2, "atOrigin"); 3972 timer - t; 3973 t = timer; 3974 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3975 timer - t; 3976 size(reduce(l1[1], groebner(l2[1]))); 3977 size(reduce(l2[1], groebner(l1[1]))); 3978 LIB"integralbasis.lib"; 3979 ring r = 0,(x,y),dp; 3980 poly f = (y^4 + 2*x^3*y^2 + x^6 + x^5*y)^3 + x^11*y^11; 3981 int t = timer; 3982 list l1 = integralBasis(f, 2, "atOrigin"); 3983 timer - t; 3984 t = timer; 3985 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3986 timer - t; 3987 size(reduce(l1[1], groebner(l2[1]))); 3988 size(reduce(l2[1], groebner(l1[1]))); 3989 LIB"integralbasis.lib"; 3990 ring r = 0,(x,y),dp; 3991 poly f = (y^5 + y^4*x^7 + 2*x^8) * (y^3 + 7*x^4) * (y^7 + 2*x^12) * (y^11 + 2*x^18) + y^30; 3992 int t = timer; 3993 list l1 = integralBasis(f, 2, "atOrigin"); 3994 timer - t; 3995 t = timer; 3996 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 3997 timer - t; 3998 size(reduce(l1[1], groebner(l2[1]))); 3999 size(reduce(l2[1], groebner(l1[1]))); 4000 LIB"integralbasis.lib"; 4001 ring r = 0,(x,y),(dp, L(100000)); 4002 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52) + y^36; 4003 int t = timer; 4004 list l1 = integralBasis(f, 2); 4005 timer - t; 4006 t = timer; 4007 list l2 = integralBasis(f, 2, "noOpti"); 4008 timer - t; 4009 LIB"integralbasis.lib"; 4010 ring r = 0,(x,y),(dp, L(100000)); 4011 poly f = (y^15 + 2*x^38)*(y^19 + 7*x^52) + y^36; 4012 int t = timer; 4013 list l1 = integralBasis(f, 2); 4014 timer - t; 4015 t = timer; 4016 list l2 = integralBasis(f, 2, "noOpti"); 4017 timer - t; 4018 size(reduce(l1[1], groebner(l2[1]))); 4019 size(reduce(l2[1], groebner(l1[1]))); 4020 LIB"integralbasis.lib"; 4021 ring r = 0,(x,y),dp; 4022 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4023 list l = integralBasis(f, 2, "atOrigin"); 4024 int t = timer; 4025 list l1 = integralBasis(f, 2); 4026 timer - t; 4027 t = timer; 4028 list l2 = integralBasis(f, 2, "noOpti"); 4029 timer - t; 4030 size(reduce(l1[1], groebner(l2[1]))); 4031 size(reduce(l2[1], groebner(l1[1]))); 4032 printlevel = 4; 4033 LIB"integralbasis.lib"; 4034 ring r = 0,(x,y),dp; 4035 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4036 list l = integralBasis(f, 2, "atOrigin"); 4037 int t = timer; 4038 list l1 = integralBasis(f, 2); 4039 timer - t; 4040 t = timer; 4041 list l2 = integralBasis(f, 2, "noOpti"); 4042 timer - t; 4043 printlevel = 4; 4044 LIB"integralbasis.lib"; 4045 ring r = 0,(x,y),dp; 4046 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4047 list l = integralBasis(f, 2, "atOrigin"); 4048 int t = timer; 4049 list l1 = integralBasis(f, 2); 4050 timer - t; 4051 t = timer; 4052 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 4053 timer - t; 4054 size(reduce(l1[1], groebner(l2[1]))); 4055 size(reduce(l2[1], groebner(l1[1]))); 4056 printlevel = 4; 4057 LIB"integralbasis.lib"; 4058 ring r = 0,(x,y),dp; 4059 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4060 int t = timer; 4061 list l1 = integralBasis(f, 2); 4062 timer - t; 4063 t = timer; 4064 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 4065 timer - t; 4066 LIB"integralbasis.lib"; 4067 ring r = 0,(x,y),dp; 4068 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4069 int t = timer; 4070 list l1 = integralBasis(f, 2, "atOrigin"); 4071 timer - t; 4072 t = timer; 4073 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 4074 timer - t; 4075 size(reduce(l1[1], groebner(l2[1]))); 4076 size(reduce(l2[1], groebner(l1[1]))); 4077 printlevel = 4; 4078 LIB"integralbasis.lib"; 4079 ring r = 0,(x,y),dp; 4080 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4081 int t = timer; 4082 list l1 = integralBasis(f, 2, "atOrigin"); 4083 timer - t; 4084 t = timer; 4085 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 4086 timer - t; 4087 "Verification..."; 4088 size(reduce(l1[1], groebner(l2[1]))); 4089 size(reduce(l2[1], groebner(l1[1]))); 4090 LIB"integralbasis.lib"; 4091 ring r = 0,(x,y),dp; 4092 poly f = (y^35 + y^34*x^7 + 2*x^38) * (y^33 + 7*x^44) * (y^37 + 2*x^52) + y^110; 4093 int t = timer; 4094 list l1 = integralBasis(f, 2, "atOrigin"); 4095 timer - t; 4096 t = timer; 4097 list l2 = integralBasis(f, 2, "atOrigin", "noOpti"); 4098 timer - t; 4099 "Verification..."; 4100 size(reduce(l1[1], groebner(l2[1]))); 4101 size(reduce(l2[1], groebner(l1[1]))); 4102 ring r = 0, (x,y,z), dp; 4103 ideal I = x5, y5, z5, xz4, xyz3, xy3z, x3yz; 4104 hilb(groebner(I)); 4105 I; 4106 hilb(I); 4107 ideal J = x5, y5, z5; 4108 hilb(groebner(J)); 4109 ideal I = x3,y3,z3; 4110 hilb(groebner(I)); 4111 ring R=32003,(x,y,z),dp; 4112 ideal i=x2,y2,z2; 4113 ideal s=std(i); 4114 hilb(s); 4115 ring R=32003,(x,y,z),dp; 4116 ideal i=x2,y2,z2; 4117 ideal s=std(i); 4118 hilb(s,1); 4119 ring R=32003,(x,y,z),dp; 4120 ideal i=x2,y2,z2; 4121 ideal s=std(i); 4122 hilb(s,2); 4123 hilb(groebner(I)); 4124 ring r = 0, (x,y,z), dp; 4125 ideal I = x5, y5, z5, xz4, xyz3, xy3z, x3yz; 4126 hilb(groebner(I)); 4127 def H = hilb(groebner(I)); 4128 ring r = 0, (x,y,z), dp; 4129 ideal I = x5, y5, z5, xz4, xyz3, xy3z, x3yz; 4130 hilb(groebner(I),2); 4131 ring r = 0, (x,y,z), dp; 4132 ideal I = x5, y5, z5; 4133 hilb(groebner(I),2); 4134 ideal I = x5, y5, z5, xz4, xyz3, xy3z, x3yz; 4135 hilb(groebner(I),2); 4136 ideal I = x5, y5, z5, x*z^4, y^2*z^3, x*y*z^3, x^3*y*z; 4137 hilb(groebner(I),2); 4138 ideal I = x5, y5, z5, x*z^4, x^4*y, y^4*z, x^2*y*z^2; 4139 hilb(groebner(I),2); 4140 ideal I = x5, y5, z5, x^2*y^3, x^3*z^2, x*y*z^3, x^2*y*z^2; 4141 hilb(groebner(I),2); 4142 ideal I = x5, y5, z5, x^2*y^3, x^3*z^2, x^2*y*z^2, x^2*y*z^2; 4143 hilb(groebner(I),2); 4144 ideal I = x5, y5, z5, x^2*y^3, x^3*z^2, x^3*y*z, x^2*y*z^2; 4145 hilb(groebner(I),2); 4146 LIB"integralbasis.lib"; 4147 ring r = 0,(x,y),dp; 4148 poly f = x^(30)+x^2*y^2+y^(11); 4149 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4150 f=phi(f); 4151 int t = timer; 4152 list l1 = integralBasis(f, 2, "atOrigin"); 4153 timer - t; 4154 LIB"integralbasis.lib"; 4155 ring R = 0,(x,y),dp; 4156 poly f = x^(30)+x^2*y^2+y^(11); 4157 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4158 f=phi(f); 4159 int t = timer; 4160 list l1 = integralBasis(f, 2, "atOrigin"); 4161 timer - t; 4162 poly f = x^(30)+x^2*y^2+y^(11); 4163 int t = timer; 4164 int t = timer; 4165 list l1 = integralBasis(f, 2, "atOrigin"); 4166 timer - t; 4167 printlevel = 5; 4168 LIB"integralbasis.lib"; 4169 ring R = 0,(x,y),dp; 4170 poly f = x^(30)+x^2*y^2+y^(11); 4171 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4172 poly g =phi(f); 4173 int t = timer; 4174 list l1 = integralBasis(f, 2, "atOrigin"); 4175 timer - t; 4176 int t = timer; 4177 list l1 = integralBasis(g, 2, "atOrigin"); 4178 timer - t; 4179 g; 4180 printlevel = 8; 4181 LIB"integralbasis.lib"; 4182 ring R = 0,(x,y),dp; 4183 poly f = x^(30)+x^2*y^2+y^(11); 4184 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4185 poly g =phi(f); 4186 int t = timer; 4187 list l1 = integralBasis(g, 2, "atOrigin"); 4188 timer - t; 4189 [200~printlevel = 8; 4190 LIB"integralbasis.lib"; 4191 ring R = 0,(x,y),dp; 4192 poly f = x^(30)+x^2*y^2+y^(11); 4193 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4194 poly g =phi(f); 4195 printlevel = 8; 4196 LIB"integralbasis.lib"; 4197 ring R = 0,(x,y),dp; 4198 poly f = x^(30)+x^2*y^2+y^(11); 4199 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4200 poly g =phi(f); 4201 puisex(f,1,-1); 4202 puiseux(f,1,-1); 4203 puiseux(g,1,-1); 4204 list l = puiseux(g,1,-1); 4205 def S = l[1]; 4206 setring S; 4207 PE; 4208 basering 4209 ; 4210 ring R = 0,(x,y),dp; 4211 poly f = x^(30)+x^2*y^2+y^(11); 4212 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4213 poly g =phi(f); 4214 g; 4215 f; 4216 puiseux(g, 1, -1); 4217 LIB"integralbasis.lib"; 4218 ring R = 0,(x,y),dp; 4219 poly f = x^(30)+x^2*y^2+y^(11); 4220 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4221 poly g =phi(f); 4222 puiseux(g, 1, -1); 4223 puiseux(f, 1, -1); 4224 list l1 = puiseux(g, 1, -1); 4225 def S = l1[1]; 4226 setring S; 4227 PE; 4228 setring r; 4229 setring R; 4230 l; 4231 l1; 4232 g; 4233 LIB"integralbasis.lib"; 4234 ring R = 0,(x,y),dp; 4235 poly h = x31+x30y+x29y2+x28y3+x27y4+x26y5+x25y6+x24y7+x23y8+x22y9+x21y10+x20y11+x19y12+x18y13+x17y14+x16y15+x15y16+x14y17+x13y18+x12y19+x11y20+x10y21+x9y22+x8y23+x7y24+x6y25+x5y26+x4y27+x3y28+x2y29+xy30+y31+x30+x29y+x28y2+x27y3+x26y4+x25y5+x24y6+x23y7+x22y8+x21y9+x20y10+x19y11+x18y12+x17y13+x16y14+x15y15+x14y16+x13y17+x12y18+x11y19+x10y20+x9y21+x8y22+x7y23+x6y24+x5y25+x4y26+x3y27+x2y28+xy29+y30+x29+x28y+x27y2+x26y3+x25y4+x24y5+x23y6+x22y7+x21y8+x20y9+x19y10+x18y11+x17y12+x16y13+x15y14+x14y15+x13y16+x12y17+x11y18+x10y19+x9y20+x8y21+x7y22+x6y23+x5y24+x4y25+x3y26+x2y27+xy28+x28+x27y+x26y2+x25y3+x24y4+x23y5+x22y6+x21y7+x20y8+x19y9+x18y10+x17y11+x16y12+x15y13+x14y14+x13y15+x12y16+x11y17+x10y18+x9y19+x8y20+x7y21+x6y22+x5y23+x4y24+x3y25+x2y26+xy27+x27+x26y+x25y2+x24y3+x23y4+x22y5+x21y6+x20y7+x19y8+x18y9+x17y10+x16y11+x15y12+x14y13+x13y14+x12y15+x11y16+x10y17+x9y18+x8y19+x7y20+x6y21+x5y22+x4y23+x3y24+x2y25+xy26+x26+x25y+x24y2+x23y3+x22y4+x21y5+x20y6+x19y7+x18y8+x17y9+x16y10+x15y11+x14y12+x13y13+x12y14+x11y15+x10y16+x9y17+x8y18+x7y19+x6y20+x5y21+x4y22+x3y23+x2y24+xy25+x25+x24y+x23y2+x22y3+x21y4+x20y5+x19y6+x18y7+x17y8+x16y9+x15y10+x14y11+x13y12+x12y13+x11y14+x10y15+x9y16+x8y17+x7y18+x6y19+x5y20+x4y21+x3y22+x2y23+xy24+x24+x23y+x22y2+x21y3+x20y4+x19y5+x18y6+x17y7+x16y8+x15y9+x14y10+x13y11+x12y12+x11y13+x10y14+x9y15+x8y16+x7y17+x6y18+x5y19+x4y20+x3y21+x2y22+xy23+x23+x22y+x21y2+x20y3+x19y4+x18y5+x17y6+x16y7+x15y8+x14y9+x13y10+x12y11+x11y12+x10y13+x9y14+x8y15+x7y16+x6y17+x5y18+x4y19+x3y20+x2y21+xy22+x22+x21y+x20y2+x19y3+x18y4+x17y5+x16y6+x15y7+x14y8+x13y9+x12y10+x11y11+x10y12+x9y13+x8y14+x7y15+x6y16+x5y17+x4y18+x3y19+x2y20+xy21+x21+x20y+x19y2+x18y3+x17y4+x16y5+x15y6+x14y7+x13y8+x12y9+x11y10+x10y11+x9y12+x8y13+x7y14+x6y15+x5y16+x4y17+x3y18+x2y19+xy20+x20+x19y+x18y2+x17y3+x16y4+x15y5+x14y6+x13y7+x12y8+x11y9+x10y10+x9y11+x8y12+x7y13+x6y14+x5y15+x4y16+x3y17+x2y18+xy19+x19+x18y+x17y2+x16y3+x15y4+x14y5+x13y6+x12y7+x11y8+x10y9+x9y10+x8y11+x7y12+x6y13+x5y14+x4y15+x3y16+x2y17+xy18+x18+x17y+x16y2+x15y3+x14y4+x13y5+x12y6+x11y7+x10y8+x9y9+x8y10+x7y11+x6y12+x5y13+x4y14+x3y15+x2y16+xy17+x17+x16y+x15y2+x14y3+x13y4+x12y5+x11y6+x10y7+x9y8+x8y9+x7y10+x6y11+x5y12+x4y13+x3y14+x2y15+xy16+x16+x15y+x14y2+x13y3+x12y4+x11y5+x10y6+x9y7+x8y8+x7y9+x6y10+x5y11+x4y12+x3y13+x2y14+x15+x14y+x13y2+x12y3+x11y4+x10y5+x9y6+x8y7+x7y8+x6y9+x5y10+x4y11+x3y12+x2y13+x14+x13y+x12y2+x11y3+x10y4+x9y5+x8y6+x7y7+x6y8+x5y9+x4y10+x3y11+x2y12+x13+x12y+x11y2+x10y3+x9y4+x8y5+x7y6+x6y7+x5y8+x4y9+x3y10+x2y11+x12+x11y+x10y2+x9y3+x8y4+x7y5+x6y6+x5y7+x4y8+x3y9+x2y10+x11+x10y+x9y2+x8y3+x7y4+x6y5+x5y6+x4y7+x3y8+x2y9+x9y+x8y2+x7y3+x6y4+x5y5+x4y6+x3y7+x2y8+x8y+x7y2+x6y3+x5y4+x4y5+x3y6+x2y7+x7y+x6y2+x5y3+x4y4+x3y5+x2y6+x5y2+x4y3+x3y4+x2y5+x4y2+x3y3+x2y4+x3y2+x2y3+x2y2; 4236 poly h2 = phi(h); 4237 int t = timer; 4238 list l1 = integralBasis(h2, 2, "atOrigin"); 4239 timer - t; 4240 LIB"integralbasis.lib"; 4241 ring R = 0,(x,y),dp; 4242 poly h = x31+x30y+x29y2+x28y3+x27y4+x26y5+x25y6+x24y7+x23y8+x22y9+x21y10+x20y11+x19y12+x18y13+x17y14+x16y15+x15y16+x14y17+x13y18+x12y19+x11y20+x10y21+x9y22+x8y23+x7y24+x6y25+x5y26+x4y27+x3y28+x2y29+xy30+y31+x30+x29y+x28y2+x27y3+x26y4+x25y5+x24y6+x23y7+x22y8+x21y9+x20y10+x19y11+x18y12+x17y13+x16y14+x15y15+x14y16+x13y17+x12y18+x11y19+x10y20+x9y21+x8y22+x7y23+x6y24+x5y25+x4y26+x3y27+x2y28+xy29+y30+x29+x28y+x27y2+x26y3+x25y4+x24y5+x23y6+x22y7+x21y8+x20y9+x19y10+x18y11+x17y12+x16y13+x15y14+x14y15+x13y16+x12y17+x11y18+x10y19+x9y20+x8y21+x7y22+x6y23+x5y24+x4y25+x3y26+x2y27+xy28+x28+x27y+x26y2+x25y3+x24y4+x23y5+x22y6+x21y7+x20y8+x19y9+x18y10+x17y11+x16y12+x15y13+x14y14+x13y15+x12y16+x11y17+x10y18+x9y19+x8y20+x7y21+x6y22+x5y23+x4y24+x3y25+x2y26+xy27+x27+x26y+x25y2+x24y3+x23y4+x22y5+x21y6+x20y7+x19y8+x18y9+x17y10+x16y11+x15y12+x14y13+x13y14+x12y15+x11y16+x10y17+x9y18+x8y19+x7y20+x6y21+x5y22+x4y23+x3y24+x2y25+xy26+x26+x25y+x24y2+x23y3+x22y4+x21y5+x20y6+x19y7+x18y8+x17y9+x16y10+x15y11+x14y12+x13y13+x12y14+x11y15+x10y16+x9y17+x8y18+x7y19+x6y20+x5y21+x4y22+x3y23+x2y24+xy25+x25+x24y+x23y2+x22y3+x21y4+x20y5+x19y6+x18y7+x17y8+x16y9+x15y10+x14y11+x13y12+x12y13+x11y14+x10y15+x9y16+x8y17+x7y18+x6y19+x5y20+x4y21+x3y22+x2y23+xy24+x24+x23y+x22y2+x21y3+x20y4+x19y5+x18y6+x17y7+x16y8+x15y9+x14y10+x13y11+x12y12+x11y13+x10y14+x9y15+x8y16+x7y17+x6y18+x5y19+x4y20+x3y21+x2y22+xy23+x23+x22y+x21y2+x20y3+x19y4+x18y5+x17y6+x16y7+x15y8+x14y9+x13y10+x12y11+x11y12+x10y13+x9y14+x8y15+x7y16+x6y17+x5y18+x4y19+x3y20+x2y21+xy22+x22+x21y+x20y2+x19y3+x18y4+x17y5+x16y6+x15y7+x14y8+x13y9+x12y10+x11y11+x10y12+x9y13+x8y14+x7y15+x6y16+x5y17+x4y18+x3y19+x2y20+xy21+x21+x20y+x19y2+x18y3+x17y4+x16y5+x15y6+x14y7+x13y8+x12y9+x11y10+x10y11+x9y12+x8y13+x7y14+x6y15+x5y16+x4y17+x3y18+x2y19+xy20+x20+x19y+x18y2+x17y3+x16y4+x15y5+x14y6+x13y7+x12y8+x11y9+x10y10+x9y11+x8y12+x7y13+x6y14+x5y15+x4y16+x3y17+x2y18+xy19+x19+x18y+x17y2+x16y3+x15y4+x14y5+x13y6+x12y7+x11y8+x10y9+x9y10+x8y11+x7y12+x6y13+x5y14+x4y15+x3y16+x2y17+xy18+x18+x17y+x16y2+x15y3+x14y4+x13y5+x12y6+x11y7+x10y8+x9y9+x8y10+x7y11+x6y12+x5y13+x4y14+x3y15+x2y16+xy17+x17+x16y+x15y2+x14y3+x13y4+x12y5+x11y6+x10y7+x9y8+x8y9+x7y10+x6y11+x5y12+x4y13+x3y14+x2y15+xy16+x16+x15y+x14y2+x13y3+x12y4+x11y5+x10y6+x9y7+x8y8+x7y9+x6y10+x5y11+x4y12+x3y13+x2y14+x15+x14y+x13y2+x12y3+x11y4+x10y5+x9y6+x8y7+x7y8+x6y9+x5y10+x4y11+x3y12+x2y13+x14+x13y+x12y2+x11y3+x10y4+x9y5+x8y6+x7y7+x6y8+x5y9+x4y10+x3y11+x2y12+x13+x12y+x11y2+x10y3+x9y4+x8y5+x7y6+x6y7+x5y8+x4y9+x3y10+x2y11+x12+x11y+x10y2+x9y3+x8y4+x7y5+x6y6+x5y7+x4y8+x3y9+x2y10+x11+x10y+x9y2+x8y3+x7y4+x6y5+x5y6+x4y7+x3y8+x2y9+x9y+x8y2+x7y3+x6y4+x5y5+x4y6+x3y7+x2y8+x8y+x7y2+x6y3+x5y4+x4y5+x3y6+x2y7+x7y+x6y2+x5y3+x4y4+x3y5+x2y6+x5y2+x4y3+x3y4+x2y5+x4y2+x3y3+x2y4+x3y2+x2y3+x2y2; 4243 map phi = R,x+2*y+x^2+x*y+y^2+x^3,3*x+5*y+x^2*y+y^2; 4244 poly h2 = phi(h); 4245 int t = timer; 4246 list l1 = integralBasis(h2, 2, "atOrigin"); 4247 timer - t; 4248 -
Singular/LIB/integralbasis.lib
r8bdde5 r0c2a2e 1099 1099 1100 1100 // We compute the integral basis. 1101 list ib = ibNonRatXY(fCh, px, py, locBasis );1101 list ib = ibNonRatXY(fCh, px, py, locBasis, optimize); 1102 1102 1103 1103 if(li > 0) … … 1166 1166 1167 1167 1168 /////////////////////////////////////////////////////////////////////// 1169 // Computation of Puiseux segments and classes in each segment 1170 // Finding classes should be easy, just looking at the slope of each segment 1171 1172 // Returns a list of two lists 1173 // In the first list, the polynomials of each segment 1174 // In the second list, the classes of expansions corresponding to each segment 1175 1176 proc in_array(list l, def elem) 1168 ////////////////////////////////////////////////////////////////////////////// 1169 // 1170 // OPTIMIZATION APPROACH TO COMPUTE THE INTEGRAL BASIS AS EXPLAINED IN THE 1171 // PAPER by Boehm, Decker, Laplagne & Pfister 1172 // 1173 // In most cases this is faster than locLocAlgorithm 1174 // 1175 ///////////////////////////////////////////////////////////////////////////// 1176 1177 // Auxiliary function 1178 static proc in_array(list l, def elem) 1177 1179 { 1178 1180 int i; … … 1188 1190 } 1189 1191 1192 /////////////////////////////////////////////////////////////////////// 1193 // Computation of Puiseux segments and classes in each segment 1194 // 1190 1195 // We compute the Puiseux segments using Hensel lifting. 1191 1196 // The segments are order according to the initial exponent from … … 1193 1198 // The classes of Puiseux expansions are grouped matching the 1194 1199 // Puiseux segments. 1200 // 1201 // Returns a list of two lists 1202 // In the first list, the polynomials of each segment 1203 // In the second list, the classes of expansions corresponding to each segment 1204 1195 1205 1196 1206 proc getSegments(poly f, list classes, list slopes, int globOrder) … … 1234 1244 dbprint(dbg, "----Computing Puiseux Segments..."); 1235 1245 fSegment = henselSegments(fLoc, maxOrder); 1246 "Number of segments: ", size(fSegment); 1247 1248 list pRecomputed; 1249 list nPoly; 1236 1250 1237 1251 //"Check output of henselSegments"; … … 1241 1255 // We compute the newton poly of each polynomial to find out the 1242 1256 // corresponding slope 1243 list l= newtonpoly(fSegment[i]);1244 slopeSegment = number( l[2][1]) / number(l[1][2]);1257 nPoly = newtonpoly(fSegment[i]); 1258 slopeSegment = number(nPoly[2][1]) / number(nPoly[1][2]); 1245 1259 1246 1260 // We look for all classes with same slope as each segment … … 1248 1262 for(j = 1; j <= size(classes); j++) 1249 1263 { 1250 if(slopes[j][1] * l[1][2] == slopes[j][2] * l[2][1]) // same slope1264 if(slopes[j][1] * nPoly[1][2] == slopes[j][2] * nPoly[2][1]) // same slope 1251 1265 { 1252 1266 // If slopes coincide we add the class to the list … … 1254 1268 } 1255 1269 } 1270 1271 // If the number of classes in the segments is larger than one, 1272 // we need to recompute expansions up to degree maxOrder so that 1273 // the factors can be computed correctly. 1274 if(size(classesNew) > 1) 1275 { 1276 // puiseux(poly f, int maxDeg, int atOrigin) 1277 list lRecomputed = puiseux(fSegment[i], globOrder, 1); 1278 debug_log_intbas(3, "------Puiseux expansions recomputed: "); 1279 classesNew = getClasses(lRecomputed); 1280 } 1256 1281 1257 1282 // We put everything together … … 1302 1327 1303 1328 // We get all the possible polynomials, including the full polys 1329 //"Building factors from classes..."; 1304 1330 list bF = buildFactors(classes); 1305 1331 … … 1318 1344 } 1319 1345 } 1320 // We compute the full polynomial up to the integrality exponent 1321 pGround = buildPolyGroundXRootClass(classes[i], degExpand); 1322 if(in_array(polySet, pGround) == 0) 1323 { 1324 polySet[size(polySet)+1] = pGround; 1346 1347 // We compute the full polynomial up to the integrality exponent. 1348 // When there is only one class we use the polynomial obtained from Hensel lifting. 1349 // If there are more than 1 class in the segment we need to compute the 1350 // polynomials from the Puiseux expansions (or use the blocks, but not implemented). 1351 if(size(classes) == 1) 1352 { 1353 polySet[size(polySet)+1] = f; 1354 } else 1355 { 1356 pGround = buildPolyGroundXRootClass(classes[i], degExpand); 1357 if(in_array(polySet, pGround) == 0) 1358 { 1359 polySet[size(polySet)+1] = pGround; 1360 } 1325 1361 } 1326 1362 } … … 1358 1394 } 1359 1395 1360 // For each degree up to the degree of f, w ithcompute the best1396 // For each degree up to the degree of f, we compute the best 1361 1397 // possible product of factors by checking exhaustively all possible 1362 1398 // combinations such that the product has the correct degree. 1399 // Used for the direct approach. 1363 1400 proc ibExhaustive(list polySet, intvec degPolySet, list ordExpAtPoly, int degF) 1364 1401 { … … 1486 1523 proc optiBase(list ibSeg, list segmentSlope) 1487 1524 { 1488 int i ;1525 int i, k; 1489 1526 int s = size(ibSeg); 1490 1527 1491 1528 if(s == 1) {return(ibSeg[1]);} 1492 // Implement the optimization algorithm...1493 // Use the code already implemented??1494 1529 1495 //for(i = s-1; i >= 1; i++) 1496 //{ 1497 if(s == 2) 1498 { 1499 return(optiTwoSets(ibSeg[1], segmentSlope[1][2], ibSeg[2], segmentSlope[2][2])); 1500 } 1530 // We initialize the recursion step 1531 list ibSegRec = ibSeg[s]; 1532 list segmentSlopeRec = segmentSlope[s]; // Should be fixed to contain only slopes 1533 1534 for(k = s-1; k >= 1; k--) 1535 { 1536 ibSegRec = optiTwoSets(ibSeg[k], segmentSlope[k][2], ibSegRec, segmentSlopeRec[2]); 1537 segmentSlopeRec = segmentSlope[k]; 1538 } 1539 return(ibSegRec); 1501 1540 } 1502 1541 … … 1504 1543 proc optiTwoSets(list ib1, number slope1, list ib2, number slope2) 1505 1544 { 1506 "optiTwoSets begin...";1545 //"optiTwoSets begin..."; 1507 1546 1508 1547 int s1 = size(ib1)-1; // max degree … … 1511 1550 intvec cBest; 1512 1551 int d; 1552 1553 //"s1 + s2 = ", s1 + s2; 1513 1554 1514 1555 number o, o1, o2; … … 1519 1560 out[1] = list(0, intvec(0,0), 1); 1520 1561 // Best element of degree d 1562 1563 int m1, m2; 1521 1564 for(d = 1; d <= s1 + s2; d++) 1522 1565 { 1523 1566 oBest = 0; 1524 for(c1 = 0; c1 <= s1; c1++) 1525 { 1526 if(c1 <= d) 1527 { 1528 c2 = d - c1; 1529 if(c2 <= s2) 1567 m1 = max(0, d - s2); 1568 m2 = min(s1, d); 1569 for(c1 = m1; c1 <= m2; c1++) 1570 { 1571 c2 = d - c1; 1572 if(c2 <= s2) 1573 { 1574 // The first component of ib1 contains the orders of the best polynomial of each degree 1575 if(c1 < s1) 1530 1576 { 1531 // The first component of ib1 contains the orders of the best polynomial of each degree 1532 if(c1 < s1) 1577 o1 = c2 * slope1 + ib1[c1+1][1]; // The valuation of an expansion from the first group 1578 } 1579 if(c2 < s2) 1580 { 1581 o2 = c1 * slope1 + ib2[c2+1][1]; // The valuation of an expansion from the second group 1582 } 1583 if(c1 == s1) 1584 { 1585 o = o2; 1586 } else 1587 { 1588 if(c2 == s2) 1533 1589 { 1534 o1 = c2 * slope1 + ib1[c1+1][1]; // The valuation of an expansion from the first group 1535 } 1536 if(c2 < s2) 1537 { 1538 o2 = c1 * slope1 + ib2[c2+1][1]; // The valuation of an expansion from the second group 1539 } 1540 if(c1 == s1) 1541 { 1542 o = o2; 1590 o = o1; 1543 1591 } else 1544 1592 { 1545 if(c2 == s2) 1546 { 1547 o = o1; 1548 } else 1549 { 1550 if(o1 < o2) {o = o1;} 1551 else {o = o2;} 1552 } 1553 } 1554 //"c1 = ", c1, "c2 = ", c2, "s1 = ", s1, "s2 = ", s2, "o = ", o; 1555 1556 if(o > oBest) 1557 { 1558 oBest = o; 1559 cBest = intvec(c1, c2); 1560 polyBest = ib1[c1+1][3] * ib2[c2+1][3]; 1593 if(o1 < o2) {o = o1;} 1594 else {o = o2;} 1561 1595 } 1562 1596 } 1563 } 1564 } 1597 //"c1 = ", c1, "c2 = ", c2, "s1 = ", s1, "s2 = ", s2, "o = ", o; 1598 1599 if(o > oBest) 1600 { 1601 oBest = o; 1602 cBest = intvec(c1, c2); 1603 } 1604 } 1605 } 1606 polyBest = ib1[cBest[1]+1][3] * ib2[cBest[2]+1][3]; 1565 1607 out[size(out) + 1] = list(oBest, cBest, polyBest); 1566 1608 } 1609 //"optiTwoSets finished..."; 1610 1567 1611 return(out); 1568 1612 } 1569 1613 1570 1614 1571 1572 1573 1615 1574 1616 //////////////////////////////////////////////////////////////////////// … … 1645 1687 list bestElem = vS[2]; 1646 1688 1647 "MClass";1648 MClass;1689 //"MClass"; 1690 //MClass; 1649 1691 1650 1692 //classes; 1693 //~; 1651 1694 1652 1695 … … 1682 1725 1683 1726 // Optimization algorithm from scratch 1727 1728 if((pardeg(minpoly) > 0) and (optimize == 1)) 1729 { 1730 "Optimization not implemented for conjugated singularities. Using chinese remainder algorithm for this component."; 1731 optimize = 0; 1732 } 1733 1684 1734 if(optimize == 1) 1685 1735 { 1736 "Using optimization algorithm"; 1686 1737 // 1) Compute Puiseux sets (we use segments for easier implementation) 1687 1738 list pSegmentFull = getSegments(f, classes, slopes, degExpand); … … 1725 1776 IOut[k+1] = condu * var(2)^(k); 1726 1777 } 1727 for(k = 1; k <= size(ib) - 2; k++) 1728 { 1729 IOut[size(IOut)+1] = ib[k+1][3] * var(1)^(intExp - int(ib[k+1][1])) * unitPoly; 1778 //~; 1779 for(k = 1; k <= size(ib) - 1; k++) 1780 { 1781 IOut[size(IOut)+1] = ib[k][3] * var(1)^(intExp - int(ib[k][1])) * unitPoly; 1730 1782 } 1731 1783 "step 4 finished"; … … 1829 1881 1830 1882 debug_log_intbas(3, "------Time for ordFull: ", timer - tt); 1831 "ordFull is wrong for us...";1832 //~;1833 1883 1834 1884 tt = timer; … … 1861 1911 for(i = 1; i <= nClasses; i++) 1862 1912 { 1863 mdmTemp = maxDegMerge(n, i, locBasis, d0, M, MSelf, md, classes, I2Lifted, bestElem, ordsFull, ordsBest , optimize);1913 mdmTemp = maxDegMerge(n, i, locBasis, d0, M, MSelf, md, classes, I2Lifted, bestElem, ordsFull, ordsBest); 1864 1914 //"mdmTemp = ", mdmTemp; 1865 1915 mdm = maxInt(mdm, mdmTemp); … … 2003 2053 tt = timer; 2004 2054 2005 if(optimize == 0) 2006 { 2007 for(i = 1; i <= nClasses; i++) 2008 { 2009 // Computing ~A(i)_new... (using modified chinese remainder) 2010 IdOut[i] = locLocAlgorithm(n, i, locBasis, d0, M, MSelf, md, classes, I2LiftedFull, mdm, bestElem, ordsFull, ordsBest); 2011 bases = bases + list(IdOut[i]); 2012 } 2013 debug_log_intbas(3, "------Time integral basis for all branches: ", timer - tt); 2014 2015 if(nClasses > 1) 2016 { 2017 // We add some extra polynomials to the integral basis 2018 // which will simplify the computations 2019 list enzNum; 2020 list enzDen; 2021 poly elemNum; 2022 number euNum; 2023 int eu; 2024 intvec classesInd = 1:nClasses; 2025 number ordY = ordAtClassesPol(var(2), classes, classesInd); 2026 for(k = 0; k < n - deg(I2Lifted[1], vy); k++) 2027 { 2028 elemNum = var(2)^k; 2029 euNum = ordY * k; 2030 eu = int(euNum); 2031 enzNum = enzNum + list(elemNum); 2032 enzDen = enzDen + list(var(1)^(eu)); 2033 } 2034 list enzOut = comDen(enzNum, enzDen); 2035 ideal enzId = enzOut[2]; 2036 for(k=1; k <=size(enzOut[1]); k++) 2037 { 2038 enzId[k+1] = enzOut[1][k]; 2039 } 2040 list enzOutList = enzId, enzId[1]; 2041 bases = bases + list(enzOutList); 2042 } 2043 2044 2045 tt = timer; 2046 if(size(bases) > 1) 2047 { 2048 // We compute the local integral basis at the origin 2049 dbprint(dbg, "--Merging the integral bases for the branches..."); 2050 outNormal = mergeBases(bases); 2051 2052 // Check the correct degree for reduction 2053 //outNormal[1] = reduce(outNormal[1], groebner(x^mdm)); 2054 2055 2056 //dbprint(dbg, "----Computing the groebner basis...", outNormal[1]); 2057 //dbprint(dbg, "----Denominator:", outNormal[2]); 2058 outNormal[1] = groebner(outNormal[1]); 2059 dbprint(dbg, "----Merging finished"); 2060 poly fLoc = 1; 2061 tmp_var_mdm=std(x^mdm); 2062 for(k = 2; k <= size(I2LiftedFull); k++) 2063 { 2064 fLoc = reduce(fLoc * reduce(I2LiftedFull[k], tmp_var_mdm), tmp_var_mdm); 2065 } 2066 int needGroeb = 1; 2067 list intBas = normToInt(fLoc, outNormal[1], outNormal[2], needGroeb); 2068 } else 2069 { 2070 list intBas; 2071 intBas[1] = bases[1][1]; 2072 intBas[2] = bases[1][2]; 2073 } 2074 debug_log_intbas(3, "------Time for merging bases: ", timer - tt); 2075 2076 2077 // We add the unit outside the origin 2078 for(k = 0; k < deg(I2LiftedFull[1], vy); k++) 2079 { 2080 IOut[k+1] = intBas[2]*var(2)^(k); 2081 } 2082 for(k = 1; k <= size(intBas[1]); k++) 2083 { 2084 IOut[size(IOut)+1] = intBas[1][k] * I2Lifted[1]; 2085 } 2086 } else { 2087 // Computation of the smallest slope 2088 list sl = getSlope(slopes); 2089 slN = sl[1]; 2090 slD = sl[2]; 2091 bestSl = sl[3]; 2092 intvec vxy = (slD, slN); 2093 2094 IOut = optimAlgorithm(n, locBasis, d0, d1, vxy, M, MSelf, md, classes, I2Lifted, bestElem, optimize); 2055 for(i = 1; i <= nClasses; i++) 2056 { 2057 // Computing ~A(i)_new... (using modified chinese remainder) 2058 IdOut[i] = locLocAlgorithm(n, i, locBasis, d0, M, MSelf, md, classes, I2LiftedFull, mdm, bestElem, ordsFull, ordsBest); 2059 bases = bases + list(IdOut[i]); 2060 } 2061 debug_log_intbas(3, "------Time integral basis for all branches: ", timer - tt); 2062 2063 if(nClasses > 1) 2064 { 2065 // We add some extra polynomials to the integral basis 2066 // which will simplify the computations 2067 list enzNum; 2068 list enzDen; 2069 poly elemNum; 2070 number euNum; 2071 int eu; 2072 intvec classesInd = 1:nClasses; 2073 number ordY = ordAtClassesPol(var(2), classes, classesInd); 2074 for(k = 0; k < n - deg(I2Lifted[1], vy); k++) 2075 { 2076 elemNum = var(2)^k; 2077 euNum = ordY * k; 2078 eu = int(euNum); 2079 enzNum = enzNum + list(elemNum); 2080 enzDen = enzDen + list(var(1)^(eu)); 2081 } 2082 list enzOut = comDen(enzNum, enzDen); 2083 ideal enzId = enzOut[2]; 2084 for(k=1; k <=size(enzOut[1]); k++) 2085 { 2086 enzId[k+1] = enzOut[1][k]; 2087 } 2088 list enzOutList = enzId, enzId[1]; 2089 bases = bases + list(enzOutList); 2090 } 2091 2092 2093 tt = timer; 2094 if(size(bases) > 1) 2095 { 2096 // We compute the local integral basis at the origin 2097 dbprint(dbg, "--Merging the integral bases for the branches..."); 2098 outNormal = mergeBases(bases); 2099 2100 // Check the correct degree for reduction 2101 //outNormal[1] = reduce(outNormal[1], groebner(x^mdm)); 2102 2103 2104 //dbprint(dbg, "----Computing the groebner basis...", outNormal[1]); 2105 //dbprint(dbg, "----Denominator:", outNormal[2]); 2106 outNormal[1] = groebner(outNormal[1]); 2107 dbprint(dbg, "----Merging finished"); 2108 poly fLoc = 1; 2109 tmp_var_mdm=std(x^mdm); 2110 for(k = 2; k <= size(I2LiftedFull); k++) 2111 { 2112 fLoc = reduce(fLoc * reduce(I2LiftedFull[k], tmp_var_mdm), tmp_var_mdm); 2113 } 2114 int needGroeb = 1; 2115 list intBas = normToInt(fLoc, outNormal[1], outNormal[2], needGroeb); 2116 } else 2117 { 2118 list intBas; 2119 intBas[1] = bases[1][1]; 2120 intBas[2] = bases[1][2]; 2121 } 2122 debug_log_intbas(3, "------Time for merging bases: ", timer - tt); 2123 2124 2125 // We add the unit outside the origin 2126 for(k = 0; k < deg(I2LiftedFull[1], vy); k++) 2127 { 2128 IOut[k+1] = intBas[2]*var(2)^(k); 2129 } 2130 for(k = 1; k <= size(intBas[1]); k++) 2131 { 2132 IOut[size(IOut)+1] = intBas[1][k] * I2Lifted[1]; 2095 2133 } 2096 2134 } … … 2576 2614 if(dMP > 1) 2577 2615 { 2616 dbprint(dbg, "Case where the base field is an algebraic extension of Q."); 2578 2617 poly mp = composePolys(minPolys); 2579 2618 poly mpX = subst(mp, var(2), var(1)); … … 2591 2630 fFr = fFr + subst(rel[kk], var(1), par(1)) * CC[1, kk]; 2592 2631 } 2593 dbprint(dbg, "Case where the base field is an algebraic extension of Q.");2632 polyGround = buildPolyGround(fFr, den); 2594 2633 } else 2595 2634 { 2596 2635 // No extension in the base ring 2597 poly fFB = buildPolyFrac(fF); 2636 list polyGroundExt = buildPolyGroundXRoot(fF, den, d); 2637 poly fFB = polyGroundExt[1]; 2638 kill polyGroundExt; 2598 2639 setring R; 2599 2640 fFr = imap(S, fFB); 2641 polyGround = list(fFr, 1); 2600 2642 } 2601 2643 … … 2607 2649 //polyGround = buildPolyGroundXRoot(fFr, den); 2608 2650 //polyGround = list(fFr, 1); 2609 polyGround = buildPolyGround(fFr, den);2651 //polyGround = buildPolyGround(fFr, den); 2610 2652 } else 2611 2653 { … … 2912 2954 if(deg(f2, (1,0,0)) > 0) 2913 2955 { 2914 //"f2", f2; 2956 "Polynomial is not over the ground field"; 2957 "f2", f2; 2958 ~; 2915 2959 ERROR("Polynomial is not over the ground field"); 2916 2960 gfCheck = 0; … … 2968 3012 if(deg(f2, (1,0,0)) > 0) 2969 3013 { 2970 //"f2", f2; 3014 "f2", f2; 3015 ~; 2971 3016 ERROR("Polynomial is not over the ground field"); 2972 3017 gfCheck = 0; … … 3163 3208 poly differ; 3164 3209 number ordDiff; 3210 3211 list l; 3212 3165 3213 for(i = 1; i <= size(classes); i++) 3166 3214 { … … 3185 3233 { 3186 3234 // Finally, if they have the same order we use ordAtPol. 3187 "Build fac";3235 //"Build fac"; 3188 3236 //~; 3189 l ist l= buildPolyGroundXRoot(f(j), den(j), -1);3237 l = buildPolyGroundXRoot(f(j), den(j), -1); 3190 3238 M[i, j] = ordAtPol(l[1], list(f(i), den(i))); 3191 "ord of class i at poly corresponding to class j:", M[i,j];3239 //"ord of class i at poly corresponding to class j:", M[i,j]; 3192 3240 //~; 3193 3241 } … … 3986 4034 // [Example 4] 3987 4035 3988 static proc maxDegMerge(int n, int cl, int locBasis, int d0, matrix M, list MSelf, intvec md, list classes, list I2Lifted, list bestElem, matrix ordsFull, list ordsBest , int optimize);4036 static proc maxDegMerge(int n, int cl, int locBasis, int d0, matrix M, list MSelf, intvec md, list classes, list I2Lifted, list bestElem, matrix ordsFull, list ordsBest); 3989 4037 { 3990 4038 //"START - newib.lib - maxDegMerge - 4"; … … 4030 4078 // The first term containing the locloc unit 4031 4079 expBaseFactor = expUnit; 4032 4033 "Check here"; 4034 //~; 4035 4036 if(optimize == 0) 4037 { 4038 // If the order of hi is not integer, we add a factor. 4039 // This is used in the Chinese remainder strategy 4040 if(int(denominator(expBaseFactor)) > 1) 4041 { 4042 // We add the factor corresponding to the full expansions 4043 list fullPoly; 4044 for(j = 1; j <= nClasses; j++) 4080 4081 // If the order of hi is not integer, we add a factor. 4082 // This is used in the Chinese remainder strategy 4083 if(int(denominator(expBaseFactor)) > 1) 4084 { 4085 // We add the factor corresponding to the full expansions 4086 list fullPoly; 4087 for(j = 1; j <= nClasses; j++) 4088 { 4089 fullPoly[j] = I2Lifted[j+1]; 4090 } 4091 4092 int whichElem = 0; 4093 int den1; 4094 int den2; 4095 4096 intvec degsCl; 4097 for(i = 1; i <= size(MSelf); i++) 4098 { 4099 degsCl[i] = size(MSelf[i]) + 1; 4100 } 4101 intvec chVec = 0:size(MSelf); 4102 4103 den1 = 1; 4104 den2 = int(denominator(expBaseFactor)); 4105 4106 number ordNewFactor; 4107 4108 number oAP; 4109 number oAPT; 4110 4111 while(den1 mod den2 != 0) 4112 { 4113 chVec = nextSummand(degsCl, chVec, cl); 4114 ordNewFactor = 0; 4115 for(i = 1; i <= nClasses; i++) 4045 4116 { 4046 fullPoly[j] = I2Lifted[j+1]; 4047 } 4048 4049 int whichElem = 0; 4050 int den1; 4051 int den2; 4052 4053 intvec degsCl; 4054 for(i = 1; i <= size(MSelf); i++) 4055 { 4056 degsCl[i] = size(MSelf[i]) + 1; 4057 } 4058 intvec chVec = 0:size(MSelf); 4059 4060 den1 = 1; 4061 den2 = int(denominator(expBaseFactor)); 4062 4063 number ordNewFactor; 4064 4065 number oAP; 4066 number oAPT; 4067 4068 while(den1 mod den2 != 0) 4069 { 4070 chVec = nextSummand(degsCl, chVec, cl); 4071 ordNewFactor = 0; 4072 for(i = 1; i <= nClasses; i++) 4117 if(i != cl) 4073 4118 { 4074 if(i != cl) 4119 k = chVec[i]; 4120 if(k > 0) 4075 4121 { 4076 k = chVec[i]; 4077 if(k > 0) 4122 if(k <= size(bestElem[i])) 4078 4123 { 4079 if(k <= size(bestElem[i])) 4080 { 4081 oAP = ordsBest[cl][i][k]; 4082 ordNewFactor = ordNewFactor + oAP; 4083 } else 4084 { 4085 oAP = number(ordsFull[i, cl]); 4086 ordNewFactor = ordNewFactor + oAP; 4087 } 4124 oAP = ordsBest[cl][i][k]; 4125 ordNewFactor = ordNewFactor + oAP; 4126 } else 4127 { 4128 oAP = number(ordsFull[i, cl]); 4129 ordNewFactor = ordNewFactor + oAP; 4088 4130 } 4089 4131 } 4090 4132 } 4091 den1 = int(denominator(ordNewFactor));4092 4133 } 4093 4094 poly newFactor = 1; 4095 int denNewFactor = den1; 4096 int powFactor = 0; 4097 4098 int nnE = int(numerator(expBaseFactor)); 4099 int ddE = int(denominator(expBaseFactor)); 4100 int nnY = int(numerator(ordNewFactor)); 4101 4102 while(ddE > 1) 4103 { 4104 powFactor = powFactor + 1; 4105 expBaseFactor = expUnit + powFactor * ordNewFactor; 4106 ddE = int(denominator(expBaseFactor)); 4107 } 4134 den1 = int(denominator(ordNewFactor)); 4135 } 4136 4137 poly newFactor = 1; 4138 int denNewFactor = den1; 4139 int powFactor = 0; 4140 4141 int nnE = int(numerator(expBaseFactor)); 4142 int ddE = int(denominator(expBaseFactor)); 4143 int nnY = int(numerator(ordNewFactor)); 4144 4145 while(ddE > 1) 4146 { 4147 powFactor = powFactor + 1; 4148 expBaseFactor = expUnit + powFactor * ordNewFactor; 4149 ddE = int(denominator(expBaseFactor)); 4108 4150 } 4109 4151 } … … 5680 5722 5681 5723 5682 //////////////////////////////////////////////////////////////////////////////5683 //5684 // OPTIMIZATION APPROACH TO COMPUTE THE INTEGRAL BASIS AS EXPLAINED IN THE5685 // PAPER by Boehm, Decker, Laplagne & Pfister5686 //5687 // In most cases this is faster than locLocAlgorithm5688 //5689 /////////////////////////////////////////////////////////////////////////////5690 5691 // Input: n is the degree of f5692 // Output: local contribution to the integral basis at the origin5693 // Algorithm: incorporates the local contributions to the integral basis5694 // one by one in an optimized way5695 // [Example 4]5696 5697 proc optimAlgorithm(int n, int locBasis, int d0, int d1, intvec vxy, matrix M, list MSelf, intvec md, list classes, list I2Lifted, list bestElem, int optimize)5698 {5699 dbprint(dbg, "START - intbasoptim.lib - optimAlgorithm - 1");5700 int i, j, k;5701 int t = timer;5702 list b;5703 5704 number maxExp;5705 poly num;5706 list ibNum;5707 list ibDen;5708 poly p, p1, p2;5709 t = timer;5710 intvec elem;5711 5712 int dbg = printlevel - voice + 5;5713 5714 intvec vy = (0,1);5715 intvec vx = (1,0);5716 poly x = var(1);5717 poly y = var(2);5718 int slD = vxy[1];5719 5720 dbprint(dbg, "Computing all the elements of the integral basis...");5721 5722 list bestElems;5723 if(optimize == 1){5724 bestElems = optiBest(M, MSelf, md, n);5725 //for(k = 1; k < d0; k++)5726 //{5727 //"elem: ", bestElems[k+1][2], " - ", bestElems[k+1][1];5728 //}5729 } else {5730 //"optimize = 0";5731 bestElems[1] = list();5732 for(k = 1; k < d0; k++)5733 {5734 bestElems[k+1] = ibElement(M, MSelf, k, md);5735 //"elem: ", bestElems[k+1][2], " - ", bestElems[k+1][1];5736 }5737 }5738 5739 "optiBest";5740 //~;5741 5742 if(locBasis == 0)5743 {5744 for(k = 1; k <= d1+1; k++)5745 {5746 ibNum[k] = y^(k-1);5747 ibDen[k] = 1;5748 }5749 } else5750 {5751 ibNum[1] = 1;5752 ibDen[1] = 1;5753 }5754 5755 poly pTemp;5756 for(k = 1; k < d0; k++)5757 {5758 5759 if(size(classes) > 1)5760 {5761 maxExp = bestElems[k+1][1];5762 elem = bestElems[k+1][2];5763 } else5764 {5765 maxExp = MSelf[1][k];5766 elem[1] = k;5767 }5768 if(dbg >= 3)5769 {5770 "element ", k, ": ", elem;5771 }5772 5773 num = 1;5774 for(i = 1; i <= size(elem); i++)5775 {5776 if((elem[i] > 0) and (elem[i] < md[i]))5777 {5778 pTemp = jet(bestElem[i][elem[i]], int(maxExp), vx);5779 pTemp = jet(pTemp, int(maxExp*slD), vxy);5780 num = num * pTemp;5781 num = jet(num, int(maxExp), vx);5782 num = jet(num, int(maxExp*slD), vxy);5783 }5784 }5785 for(i = 1; i <= size(elem); i++)5786 {5787 if(elem[i] == md[i])5788 {5789 pTemp = jet(I2Lifted[i + 1], int(maxExp), vx);5790 pTemp = jet(pTemp, int(maxExp*slD), vxy);5791 num = prodMod(num, pTemp, int(maxExp) + 1);5792 num = jet(num, int(maxExp), vx);5793 num = jet(num, int(maxExp*slD), vxy);5794 }5795 }5796 5797 p1 = jet(num, int(maxExp*slD), vxy);5798 if((locBasis == 1) or (d1 == 0))5799 {5800 ibNum[k+1] = p1;5801 ibDen[k+1] = x^int(maxExp);5802 } else5803 {5804 p2 = jet(I2Lifted[1], int(maxExp-1), vx);5805 p = jet(p1*p2, int(maxExp-1), vx);5806 ibNum[k+d1+1] = p;5807 ibDen[k+d1+1] = x^int(maxExp);5808 }5809 }5810 ///"Construction finished.";5811 5812 ideal IOut;5813 if(locBasis == 1)5814 {5815 for(i = 1; i<=d0; i++)5816 {5817 IOut[i] = (ibNum[i] * ibDen[d0]) / ibDen[i];5818 }5819 } else5820 {5821 for(i = 1; i<=n; i++)5822 {5823 IOut[i] = (ibNum[i] * ibDen[n]) / ibDen[i];5824 }5825 }5826 if(dbg >= 2)5827 {5828 "Time basis construction: ", timer - t;5829 }5830 return(IOut);5831 }5832 5833 // Efficient implementation of the optimization problem5834 // Output: A list, with the maximal valuation for each degree, and how5835 // many elements to take in each conjugacy class of expansions5836 // [Example 1]5837 proc optiBest(matrix M, list MSelf, intvec md, int k)5838 {5839 //"START - newib.lib - optiBest - 1";5840 int i, j;5841 int nClasses = size(md);5842 5843 list beNew, beOld;5844 intvec choice;5845 number val;5846 int totNew = md[nClasses];5847 int totOld;5848 for(i = 1; i <= totNew + 1; i++)5849 {5850 choice[1] = i - 1;5851 if(i == 1){5852 val = 0;5853 } else {5854 if(i == md[nClasses] + 1){5855 val = -1;5856 } else {5857 val = MSelf[nClasses][i-1];5858 }5859 }5860 beOld[i] = list(val, choice);5861 }5862 //"M: "; M;5863 //"beOld"; beOld;5864 int best1, best2;5865 number bestV;5866 number val1, val2;5867 for(j = size(md) - 1; j>=1; j--)5868 {5869 totOld = totNew;5870 totNew = totNew + md[j];5871 for(i = 1; i <= totNew + 1; i++)5872 {5873 bestV = -1;5874 for(k = 1; k <= md[j] + 1; k++)5875 {5876 if(((k - 1) <= (i-1)) and (i - k <= totOld))5877 {5878 //"MSelf, i, j, k"; MSelf, i, j, k;5879 //"a, b: ", k-1, i-k;5880 if(k > 1)5881 {5882 if(k-1 == md[j])5883 {5884 val1 = -1;5885 } else5886 {5887 val1 = number(MSelf[j][k-1] + (i-k)*M[j, j+1]);5888 }5889 } else5890 {5891 val1 = number((i-k)*M[j, j+1]);5892 }5893 if(beOld[i-k+1][2] > -1)5894 {5895 val2 = number((k-1)*M[j, j+1] + beOld[i-k+1][1]);5896 } else5897 {5898 val2 = -1;5899 }5900 if(((val1 < val2) and (val1 > -1)) or (val2 == -1))5901 {5902 val = val1;5903 } else {5904 val = val2;5905 }5906 //"val1, val2: ", val1, val2;5907 //"val: ", val;5908 if((val > bestV) or (val == -1))5909 {5910 //"i-k", i-k;5911 choice = k-1, beOld[i-k+1][2];5912 beNew[i] = list(val, choice);5913 }5914 }5915 }5916 //"elem: ", beNew[i][2], " - ", beNew[i][1];5917 //"i: ", i;5918 //"beNew[i]", beNew[i];5919 }5920 beOld = beNew;5921 }5922 return(beNew);5923 }5924 5724 5925 5725 /////////////////////////////////////////////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.