… | |
… | |
841 | ANHE *pos = heap + DHEAP * (k - HEAP0) + HEAP0; |
841 | ANHE *pos = heap + DHEAP * (k - HEAP0) + HEAP0; |
842 | |
842 | |
843 | // find minimum child |
843 | // find minimum child |
844 | if (expect_true (pos + DHEAP - 1 < E)) |
844 | if (expect_true (pos + DHEAP - 1 < E)) |
845 | { |
845 | { |
846 | /* fast path */ (minpos = pos + 0), (minat = ANHE_at (*minpos)); |
846 | /* fast path */ (minpos = pos + 0), (minat = ANHE_at (*minpos)); |
847 | if (ANHE_at (pos [1]) < minat) (minpos = pos + 1), (minat = ANHE_at (*minpos)); |
847 | if ( ANHE_at (pos [1]) < minat) (minpos = pos + 1), (minat = ANHE_at (*minpos)); |
848 | if (ANHE_at (pos [2]) < minat) (minpos = pos + 2), (minat = ANHE_at (*minpos)); |
848 | if ( ANHE_at (pos [2]) < minat) (minpos = pos + 2), (minat = ANHE_at (*minpos)); |
849 | if (ANHE_at (pos [3]) < minat) (minpos = pos + 3), (minat = ANHE_at (*minpos)); |
849 | if ( ANHE_at (pos [3]) < minat) (minpos = pos + 3), (minat = ANHE_at (*minpos)); |
850 | } |
850 | } |
851 | else if (pos < E) |
851 | else if (pos < E) |
852 | { |
852 | { |
853 | /* slow path */ (minpos = pos + 0), (minat = ANHE_at (*minpos)); |
853 | /* slow path */ (minpos = pos + 0), (minat = ANHE_at (*minpos)); |
854 | if (pos + 1 < E && ANHE_at (pos [1]) < minat) (minpos = pos + 1), (minat = ANHE_at (*minpos)); |
854 | if (pos + 1 < E && ANHE_at (pos [1]) < minat) (minpos = pos + 1), (minat = ANHE_at (*minpos)); |