def pdf(cls, mass, log_mode=True):
        """ PDF for the Kroupa IMF.

        Normalization is set over the mass range from 0.1 Msun to 100 Msun
        """
        log_mass = np.log10(mass)
        # From Eq 2
        mb = mbreak  = [0.08, 0.5] # Msun
        a = alpha = [0.3, 1.3, 2.3] # alpha

        # Normalization set from 0.1 -- 100 Msun
        norm = 0.27947743949440446

        b = 1./norm
        c = b * mbreak[0]**(alpha[1]-alpha[0])
        d = c * mbreak[1]**(alpha[2]-alpha[1])

        dn_dm  = b * (mass < 0.08) * mass**(-alpha[0])
        dn_dm += c * (0.08 <= mass) * (mass < 0.5) * mass**(-alpha[1])
        dn_dm += d * (0.5  <= mass) * mass**(-alpha[2])

        if log_mode:
            # Number per logarithmic mass range, i.e., dN/dlog(M)
            return dn_dm * (mass * np.log(10))
        else:
            # Number per linear mass range, i.e., dN/dM
            return dn_dm
PDF for the Kroupa IMF.

        Normalization is set over the mass range from 0.1 Msun to 100 Msun