<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def determine_scale(scale, img, mark):
 """ Scales an image using a specified ratio, 'F' or 'R'. If `scale` is 'F', the image is scaled to be as big as possible to fit in `img` without falling off the edges. If `scale` is 'R', the watermark resizes to a percentage of minimum size of source image. Returns the scaled `mark`. """

    if scale:
        try:
            scale = float(scale)
        except (ValueError, TypeError):
            pass

        if isinstance(scale, six.string_types) and scale.upper() == 'F':
            # scale watermark to full, but preserve the aspect ratio
            scale = min(
                float(img.size[0]) / mark.size[0],
                float(img.size[1]) / mark.size[1]
            )
        elif isinstance(scale, six.string_types) and scale.upper() == 'R':
            # scale watermark to % of source image and preserve the aspect ratio
            scale = min(
                float(img.size[0]) / mark.size[0],
                float(img.size[1]) / mark.size[1]
            ) / 100 * settings.WATERMARK_PERCENTAGE
        elif type(scale) not in (float, int):
            raise ValueError('Invalid scale value "%s"! Valid values are "F" '
                             'for ratio-preserving scaling, "R%%" for percantage aspect '
                             'ratio of source image and floating-point numbers and '
                             'integers greater than 0.' % scale)

        # determine the new width and height
        w = int(mark.size[0] * float(scale))
        h = int(mark.size[1] * float(scale))

        # apply the new width and height, and return the new `mark`
        return (w, h)
    else:
        return mark.size