kroneckers algorithm