Kamata-kawai algorithm